状态栏

作者: 王大碗要努力 | 来源:发表于2017-08-29 10:40 被阅读0次

一、沉浸式状态栏(没有状态栏了)

沉浸式状态栏
private void initStatusBarColor() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            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);
        }
    }

二、半透明状态栏

半透明状态栏
 static void translucentStatusBar(Activity activity) {
        Window window = activity.getWindow();
        //设置Window为透明
        window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

        ViewGroup mContentView = (ViewGroup) activity.findViewById(Window.ID_ANDROID_CONTENT);
        View mContentChild = mContentView.getChildAt(0);

        //移除已经存在假状态栏则,并且取消它的Margin间距
        removeFakeStatusBarViewIfExist(activity);
        removeMarginTopOfContentChild(mContentChild, getStatusBarHeight(activity));
        if (mContentChild != null) {
            //fitsSystemWindow 为 false, 不预留系统栏位置.
            ViewCompat.setFitsSystemWindows(mContentChild, false);
        }
}

三、白色状态栏,修改状态栏颜色

白色状态栏
public static void setStatusBarLightMode(Activity activity, int color) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            //判断是否为小米或魅族手机,如果是则将状态栏文字改为黑色
            if (MIUISetStatusBarLightMode(activity, true) || FlymeSetStatusBarLightMode(activity, true)) {
                //设置状态栏为指定颜色
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0
                    activity.getWindow().setStatusBarColor(color);
                } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4
                    //调用修改状态栏颜色的方法
                    setStatusBarColor(activity, color);
                }
            } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                //如果是6.0以上将状态栏文字改为黑色,并设置状态栏颜色
                activity.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
                activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
                activity.getWindow().setStatusBarColor(color);

                //fitsSystemWindow 为 false, 不预留系统栏位置.
                ViewGroup mContentView = (ViewGroup) activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT);
                View mChildView = mContentView.getChildAt(0);
                if (mChildView != null) {
                    ViewCompat.setFitsSystemWindows(mChildView, true);
                    ViewCompat.requestApplyInsets(mChildView);
                }
            }
        }
    }

调用

setStatusBarLightMode(this, Color.WHITE);

相关文章

  • 状态栏

    一、沉浸式状态栏(没有状态栏了) 二、半透明状态栏 三、白色状态栏,修改状态栏颜色 调用

  • 沉浸式、MVP、MVVM

    1.沉浸式状态栏 获取状态栏的高度,然后把toolbar的高度加上状态栏的高度,再设置状态栏透明设置状态栏透明: ...

  • iOS 状态栏的隐藏显示与状态栏样式的设置

    iOS 状态栏的隐藏显示与状态栏样式的设置 iOS 状态栏的隐藏显示与状态栏样式的设置

  • 隐藏状态栏

    隐藏状态栏 这里面分两种情况:1.全局隐藏状态栏;2.部分页面隐藏状态栏。 全局隐藏状态栏 如果想全局隐藏状态栏,...

  • iOS状态栏小结

    状态栏的知识点 状态栏讲解1跳转状态栏讲解2跳转

  • iOS状态栏使用总结<转>

    目录: 一、状态栏与导航栏二、设置状态栏显隐与字体样式三、设置状态栏背景色四、启动页隐藏状态栏五、状态栏、导航栏相...

  • iOS状态栏使用总结

    目录: 一、状态栏与导航栏二、设置状态栏显隐与字体样式三、设置状态栏背景色四、启动页隐藏状态栏五、状态栏、导航栏相...

  • Android 沉浸式风格(为毛叫沉浸式这么唬人)

    一、参考 1、Android 沉浸式状态栏攻略 让你的状态栏变色吧2、android设置状态栏颜色(沉浸式状态栏)...

  • 使用StatusBarUtil 来实现沉浸式

    文章参考StatusBarUtil 状态栏工具类(实现沉浸式状态栏/变色状态栏) StatusBaStatusBa...

  • 隐藏状态栏-prefersStatusBarHidden

    状态栏是什么? 怎么隐藏状态栏?

网友评论

      本文标题:状态栏

      本文链接:https://www.haomeiwen.com/subject/pftodxtx.html