首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何改变xamarin格式的屏幕亮度

如何改变xamarin格式的屏幕亮度
EN

Stack Overflow用户
提问于 2017-12-12 09:47:16
回答 2查看 4.3K关注 0票数 3

我有qr页面的xamarin形式,我想要的是,当qr是显示屏幕亮度将更亮,我找不到解决办法。我在互联网上找到了一些代码,但它返回时还带有一些错误代码信息。

编辑:我删除了源代码,因为它看起来让一些人感到困惑,我尝试的代码是针对xamarin.android的,这就是为什么它对我无效的原因(我认为xamarin.android和xamarin.forms代码几乎一样,这就是为什么我复制代码并将其粘贴到xamarin表单中,并得到了一些错误消息)。现在,我真正的问题是,如何通过xamarin形式改变屏幕亮度,我们能做到吗?如果是的话,那我怎么能试一下呢,谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-12 10:27:21

Xamarin.Forms不是平台抽象,而是UI抽象。因此,无法访问像屏幕亮度这样的系统服务。我也没有找到一个NuGet来实现这一点,因此您必须实现特定于平台的类来通过DependencyService来调整屏幕亮度和解析。

在PCL中实现接口

代码语言:javascript
复制
public interface IBrightnessService
{
    void SetBrightness(float factor);
}

并使用从公共项目到平台特定实现的DependencyService接口操作。

代码语言:javascript
复制
var brightnessService = DependencyService.Get<IBrightnessService>();
brightnessService.SetBrightness(.2);

有关如何使用DependencyService的一个非常好的紧凑示例,请参阅此页面

https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/dependency-service/introduction

安卓

您的错误消息

非静态字段、方法或属性“Windows.Attribute”需要对象。

意味着您试图访问一个类型,就好像它是一个对象一样。您需要有一个Window:Window对象的上下文,例如在您的MainActivity中就是这样。

当您处于另一个上下文中时,您将需要以某种方式获得Window的实例。在2.5之前,这是可能的

代码语言:javascript
复制
var window = ((Activity)Forms.Context).Window;

这仍然有效,但不受欢迎。无论如何,您可以使用插件并获得Window

代码语言:javascript
复制
var window = CrossCurrentActivity.Current.Activity.Window;

(来源)

代码语言:javascript
复制
using Xamarin.Forms;

[assembly: Dependency(typeof (AndroidBrightnessService))]

public class AndroidBrightnessService : IBrightnessService
{
    public void SetBrightness(float brightness)
    {
        var window = CrossCurrentActivity.Current.Activity.Window;
        var attributesWindow = new WindowManagerLayoutParams();

        attributesWindow.CopyFrom (window.Attributes);
        attributesWindow.ScreenBrightness = brightness;

        window.Attributes = attributesWindow;
    }
}

iOS

使用UIScreen.MainScreen.Brightness调整亮度。

代码语言:javascript
复制
using Xamarin.Forms;
using UIKit;

[assembly: Dependency(typeof (iOSBrightnessService))]

public class iOSBrightnessService : IBrightnessService
{
    public void SetBrightness(float brightness)
    {
        UIScreen.MainScreen.Brightness = brightness;
    }
}
票数 13
EN

Stack Overflow用户

发布于 2021-07-14 21:29:35

Android:

代码语言:javascript
复制
    public void SetBrightness(float brightness)
    {
        Window window = (MainActivity.Instance as Activity).Window;
        var attributesWindow = new WindowManagerLayoutParams();

        attributesWindow.CopyFrom(window.Attributes);
        attributesWindow.ScreenBrightness = brightness;

        window.Attributes = attributesWindow;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47769514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档