1. 程式人生 > >Android設定某個視窗常亮和最大亮度

Android設定某個視窗常亮和最大亮度

微信在展示支付二維碼時有一個很細心的細節-螢幕自動最高亮度,並且保持常亮,這樣對方掃描時就能更方便,也能有效防止螢幕玻璃反光造成的干擾。

最近專案中涉及到這個需求,查閱相關資料,總結出最簡單和適用的方法:

螢幕保持常亮

在需要常亮的視窗介面也就是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);
}

  2. 在Activity的onCreate生命週期裡呼叫這個方法,調節螢幕亮度最大

//設定螢幕亮度最大
setWindowBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL);

  3. 在Activity的onDestroy生命週期裡呼叫這個方法,當離開當前視窗時,取消螢幕最亮效果

//取消螢幕最亮
setWindowBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE);