沉浸式状态栏

后续问题再来补充

/**
 * 沉浸式状态栏
 * 使用: 在 onCreateView()中直接使用 StatusBar.fitSystemBar(this);
 * 在Activity的根布局中添加  fitsSystemWindows="true" ;
 */
public class StatusBar {

    public static void fitSystemBar(Activity activity) {

        // Android 6.0以上开启了状态栏文字的颜色
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
            return;

        Window window = activity.getWindow();
        View decorView = window.getDecorView();
        /**
         *  View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  : 这个表示页面布局会在状态栏的下一层并且不会隐藏状态栏
         *  View.SYSTEM_UI_FLAG_FULLSCREEN  : 这个表示页面布局会在状态栏的下一层但是会隐藏状态栏
         *  View.SYSTEM_UI_FLAG_LAYOUT_STABLE : 稳定的布局, 避免了当用户自行显示或隐藏下面的三大金刚键时会使布局重新刷新,而影响布局
         *  View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR :设置一个轻量的状态栏,就会是白底黑字,否则就是系统默认主题色
         */
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);


        // WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS : 允许window对状态栏的背景开启绘制
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

        // 给状态栏背景颜色设置为透明,否则会显示成灰色。
        window.setStatusBarColor(Color.TRANSPARENT);

    }
}

你可能感兴趣的:(沉浸式状态栏)