系统状态栏设置背景颜色和APP标题栏一致(非全屏)

来源:互联网 发布:oracle是什么软件 编辑:程序博客网 时间:2024/05/16 19:43

可以把方法写在BaseActivity中

public void initSystemBar(Boolean isLight) {        if (Build.VERSION.SDK_INT >= 21) {            //LAYOUT_FULLSCREEN 、LAYOUT_STABLE:让应用的主体内容占用系统状态栏的空间;//            View decorView = getWindow().getDecorView();//            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN//                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;//            decorView.setSystemUiVisibility(option);//            getWindow().setStatusBarColor(Color.TRANSPARENT);            Window window = getWindow();            //取消设置透明状态栏,使 ContentView 内容不再覆盖状态栏            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            //需要设置这个 flag 才能调用 setStatusBarColor 来设置状态栏颜色            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);            //设置状态栏颜色            if (isLight) {                window.setStatusBarColor(getResources().getColor(R.color.white));            } else {                window.setStatusBarColor(getResources().getColor(R.color.common_title_bg));            }            //状态栏颜色接近于白色,文字图标变成黑色            View decor = window.getDecorView();            int ui = decor.getSystemUiVisibility();            if (isLight) {                //light --> a|=b的意思就是把a和b按位或然后赋值给a,   按位或的意思就是先把a和b都换成2进制,然后用或操作,相当于a=a|b                ui |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;            } else {                //dark  --> &是位运算里面,与运算,  a&=b相当于 a = a&b,  ~非运算符                ui &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;            }            decor.setSystemUiVisibility(ui);        }    }

在Activity里onCreate方法中(写在setContentView后)

super.onCreate(savedInstanceState);        setContentView(R.layout.activity_mine_login);        initSystemBar(true);

===============================================================


收藏:郭霖:Android状态栏微技巧,带你真正理解沉浸式模式


阅读全文
0 0
原创粉丝点击