首页 > 系统 > Android > 正文

android设置状态栏透明以及沉浸式状态栏

2019-11-09 16:31:19
字体:
来源:转载
供稿:网友
 
根据OkGo的demo找到的。项目地址https://github.com/jeasonlzy
有些时候需要设置状态栏的属性我们通过BaseActivity中书写该方法然后在子类中重写translucentStatusBar()方法就好了。
/** 子类可以重写决定是否使用透明状态栏 */PRotected boolean translucentStatusBar() {    return false;}
/** 设置状态栏颜色 */    protected void initSystemBarTint() {        Window window = getWindow();        if (translucentStatusBar()) {            // 设置状态栏全透明            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLipOP) {                window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);                window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);                window.setStatusBarColor(Color.TRANSPARENT);            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {                getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            }            return;        }        // 沉浸式状态栏        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {            //5.0以上使用原生方法            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);            window.setStatusBarColor(setStatusBarColor());        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            //4.4-5.0使用三方工具类,有些4.4的手机有问题,不使用沉浸式//            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            SystemBarTintManager tintManager = new SystemBarTintManager(this);            tintManager.setStatusBarTintEnabled(true);            tintManager.setStatusBarTintColor(setStatusBarColor());        }    }
给自己做一个笔记。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表