服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android亮度调节关键API与技巧,实现APP亮度个性化设置

Android亮度调节关键API与技巧,实现APP亮度个性化设置

2024-04-15 18:03沐雨花飞蝶 Android

Android中并未直接提供针对于APP层面的亮度调节方式。对于需要进行APP的亮度调节,可以通过系统亮度调节或当前屏幕的亮度调节方式间接来实现。

Android系统亮度调节

Android系统亮度调节全局性最高,常见于系统设置中的亮度设置项。Android中提供了获取和设置系统亮度值(“手动模式下的亮度值”)的接口,调用相应的API获取当前的屏幕亮度值和设置一个特定的值。返回的亮度值是处于0-255之间的整型数值。

// 获取系统亮度
Settings.System.getInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS);

// 设置系统亮度
Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS,systemBrightness);

Android2.X以后的系统中,系统亮度调节中新增了“自动亮度”选项。“自动亮度”是依据外界光源来自动的改变系统亮度,目前大部分手机中对“自动亮度”还可以进行小幅度的调节其值。与自动亮度相对应的是“手动亮度”,当处于“手动亮度”下,设置拖动亮度进度条会大幅度的改变Android系统亮度。“手动亮度”和“自动亮度”分别称之为Android系统的“亮度模式”。

// 获取系统亮度模式
Settings.System.getInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE);

// 设置系统亮度模式
Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,systemMode);

Android中并未提供处于“自动亮度”模式下的亮度值接口。上面的获取系统亮度值接口实际上都是指“手动亮度”模式下的亮度值。通过手动亮度值以及设置系统亮度模式接口,可以满足常规的大部分针对Android系统亮度设置编码需求,以完成系统亮度调节。

Android当前Window亮度调节

常见场景:打开收付款界面时屏幕亮度变亮

//brightness是一个0.0-1.0之间的一个float类型数值。
Window window = activity.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.screenBrightness = brightness;
window.setAttributes(lp);

默认情况下,当我们直接修改了系统亮度值后,当前Window中是可以即时反应出来亮度效果的,这是因为默认情况下,WindowManager.LayoutParams的screenBrightness的默认值为WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE。表示Window没有自己的亮度参数,将跟随系统亮度效果的变化。当调整系统亮度后,所有Window都即时反应出系统亮度设置效果。

Android APP亮度调节

Android中并未直接提供针对于APP层面的亮度调节方式。对于需要进行APP的亮度调节,可以通过系统亮度调节或当前屏幕的亮度调节方式间接来实现。

  1. 记录下系统亮度值和亮度模式,用户在APP界面时,直接修改系统亮度值,当用户退出此APP,或APP至于后台(如按下Home按键等),再将记录的系统亮度值还原。
  2. 对每个Window进行亮度设置,在基类Activity中对APP亮度值进行设置以实现每个当前屏幕的亮度调节。


原文地址:https://mp.weixin.qq.com/s/STHIP_OW5wM1GRjrypOgqA

延伸 · 阅读

精彩推荐