Android隐藏状态栏和修改状态栏颜色_亲测有效

本文记录了隐藏状态栏和修改状态栏颜色以及电量、WiFi标志等内容的模式显示,亲测有效。

1、隐藏屏幕状态栏

public void hideStatusBar(BaseActivity activity) {
    Window window = activity.getWindow();
    //没有这一行无效
    window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    WindowManager.LayoutParams attributes = window.getAttributes();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P){
        Log.e(TAG, "onCreate: SDK_INT= "+ Build.VERSION.SDK_INT );
        //如果没有这一行就会把状态栏变成纯黑的一条什么都看不清了
        attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
    }
    window.setAttributes(attributes);
}

隐藏状态栏让下面布局完全铺满屏幕。用手从上边向下滑动可以展示状态栏,但是过几秒会再次自动隐藏。这里提到的首次是因为你第一次滑下来的是隐藏的状态栏,过几秒会自动收回去,在状态栏露出来以后此时再次向下滑才是蓝牙、数据开关的通知栏。

要注意Build.VERSION_CODES.P以上需要设置:

        attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;如果没有这一行就会把状态栏变成纯黑的一条什么都看不清了

1.1 隐藏状态栏

StatusBarUtil.getInstance().hideStatusBar(this);

  1. 设置屏幕状态栏

与隐藏titleBar不同,这里是修改了状态栏的颜色,两个参数:第一代表设置的颜色,第二代表状态栏展示内容的深色和浅色两种UI样式,颜色值属于浅色;参数二需要传入true执行深色样式,否则可能造成状态栏内容看不清。

lightColor代表在黑白两个模式设置颜色,true展示wifi、电池、时间等为黑色,false时以上为白色,所以请设置色值的时候注意一下用哪个合适。比如黑色状态栏遇到深色模式的wifi、电池、时间,就会两眼一抹黑。
 

    public void setStatusBar(BaseActivity activity,int color, boolean lightColor) {
        Log.e("setStatusBar  ", "currentThread: "+Thread.currentThread().getName() );
        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        activity.getWindow().setStatusBarColor(color);
        if (lightColor) {
            activity.getWindow().getDecorView()
                    .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
        } else {
            activity.getWindow().getDecorView()
                    .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
        }

    }

2.1修改红色状态栏背景,浅色模式:

StatusBarUtil.getInstance().setStatusBar(BaseActivity.this, getResources().getColor(p), false);

2.2 修改红色状态栏背景,深色模式:

StatusBarUtil.getInstance().setStatusBar(BaseActivity.this, getResources().getColor(p), true);


注意:在hideStatusBar()隐藏状态栏的情况下再去设置状态栏颜色是不生效的,!!!

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值