android实现屏幕最亮和恢复亮度

在一般的项目开发中,我们又是会用到二维码的展示,那么为了提高用户体验度,我们希望在打开二维码时,屏幕变最亮,退出当前二维码时,屏幕恢复到之前的亮度,那么怎么实现呢?看代码:

首先,我们需要写个调整屏幕亮度的方法
    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,这节的内容比较简单,只是用户体验上的一点小小改进,谢谢诶。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容