Android设置某个窗口常亮和最大亮度

来源:互联网 发布:qq三国70js一套小鬼神 编辑:程序博客网 时间:2024/06/11 08:09

目录(?)[+]

微信在展示支付二维码时有一个很细心的细节-屏幕自动最高亮度,并且保持常亮,这样对方扫描时就能更方便,也能有效防止屏幕玻璃反光造成的干扰。

最近项目中涉及到这个需求,查阅相关资料,总结出最简单和适用的方法:

屏幕保持常亮

在需要常亮的窗口界面也就是Activity,它的布局文件根布局里加上android:keepScreenOn=”true”


屏幕设置最大亮度

Window是android的一个抽象类,用来描述当前应用的窗口。我们可以像普通的view一样获得window的layoutParams,然后设置里面的属性,然后设置到window里面去。 
  1. 首先定义一个方法setWindowBrightness

/** * 设置当前窗口亮度 * @param brightness */private void setWindowBrightness(float brightness) {    Window window = getWindow();    WindowManager.LayoutParams lp = window.getAttributes();    lp.screenBrightness = brightness;    window.setAttributes(lp);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

  2. 在Activity的onCreate生命周期里调用这个方法,调节屏幕亮度最大

//设置屏幕亮度最大setWindowBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL);
  • 1
  • 2

  3. 在Activity的onDestroy生命周期里调用这个方法,当离开当前窗口时,取消屏幕最亮效果

//取消屏幕最亮setWindowBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE);
  • 1
  • 2