沉浸式菜单

1.大于api21可用两种方式

/**
     * 沉浸式菜单2
     */
    public void setTitleColor() {

        if (Build.VERSION.SDK_INT >= 21) {
            View decorView = getWindow().getDecorView();

//设置全屏和状态栏透明
            decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            getWindow().setStatusBarColor(getResources().getColor(R.color.selectbg));//状态栏颜色
        }

    }

    /**
     * 沉浸式菜单3
     */
    public void setTitleColor3() {

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();

//设置修改状态栏
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

//设置状态栏的颜色,和你的app主题或者标题栏颜色设置一致就ok了
            window.setStatusBarColor(getResources().getColor(R.color.selectbg));
        }

    }

2.大于4.4,但是亲测必须要用actionbar,否侧会出现偏离问题,如果适配pad的话,使用actionbar 会导致两边空白问题,请自行处理

 /**
     * 沉浸式菜单1
     */

    public void cehnjinshicaidan() {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 这个属性4.4算是全透明(有的机子是过渡形式的透明),5.0就是半透明了 我的模拟器、真机都是半透明,
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4 全透明状态栏
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0 全透明实现
            Window window = getWindow();
            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);//calculateStatusColor(Color.WHITE, (int) alphaValue)
        }
    }



你可能感兴趣的:(沉浸式菜单)