在一般的項目開發中,我們又是會用到二維碼的展示,那么為了提高用戶體驗度,我們希望在打開二維碼時,屏幕變最亮,退出當前二維碼時,屏幕恢復到之前的亮度,那么怎么實現呢?看代碼:
首先,我們需要寫個調整屏幕亮度的方法
private void setWindowBrightness(Activity activity, float brightness) {
Window window = activity.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.screenBrightness = brightness;
window.setAttributes(lp);
}
當然,為了方便調用,你可以將它寫成一個公共方法供調用
然后,在對應activity的oncreate的方法的super.onCreate(savedInstanceState);和setContentView(R.layout.main);之間調用使屏幕變量的代碼,類似這樣:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//屏幕變量
setWindowBrightness(mContext,WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL);//最亮
setContentView(mLayoutView);
}
我的activity是繼承于一個appActivity的,AppActivity中oncreate方法是這樣的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//賦值context
mContext=this;
//activity管理
AppActivityManager.getInstance().addActivity(this);
if (getContentViewId() != 0) {
mLayoutView = LayoutInflater.from(mContext).inflate(getContentViewId(), null);
setContentView(mLayoutView);
//控件綁定
mUnbinder= ButterKnife.bind(this);
}
initData();
setListener();
}
/**設置布局**/
protected abstract int getContentViewId();
//其它代碼省略
//......
然后我在我的activity中的getContentViewId方法中去設置亮度:
@Override
protected int getContentViewId() {
setWindowBrightness(mContext,WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL);//最亮
return R.layout.activity_menu;
}
最后別忘了在我的activity的ondestroy方法中恢復屏幕亮度:
@Override
protected void onDestroy() {
setWindowBrightness(mContext,WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE);//回復之前亮度
super.onDestroy();
}
最后,做一個總結,一共分三步,
- 寫一個調整屏幕亮度的方法
- 在對應的activity的oncreate方法的super.onCreate(savedInstanceState);和setContentView(R.layout.main);之間寫屏幕變量代碼
- 在對應的activity的ondestr方法中寫恢復屏幕亮度的代碼
//調整屏幕亮度的方法
private void setWindowBrightness(Activity activity, float brightness) {
Window window = activity.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.screenBrightness = brightness;
window.setAttributes(lp);
}
//屏幕變亮
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//屏幕變最亮
setWindowBrightness(mContext,WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL);//最亮
setContentView(mLayoutView);
}
//回復之前亮度
@Override
protected void onDestroy() {
setWindowBrightness(mContext,WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE);//回復之前亮度
super.onDestroy();
}
ok,這節的內容比較簡單,只是用戶體驗上的一點小小改進,謝謝誒。