在一般的项目开发中,我们又是会用到二维码的展示,那么为了提高用户体验度,我们希望在打开二维码时,屏幕变最亮,退出当前二维码时,屏幕恢复到之前的亮度,那么怎么实现呢?看代码:
首先,我们需要写个调整屏幕亮度的方法
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,这节的内容比较简单,只是用户体验上的一点小小改进,谢谢诶。