Android 沉浸式状态栏适配(支持类似支付宝蒙层状态栏)

Android 沉浸式状态栏适配

Android 4.4之前

在Android系统4.4以前,状态栏的背景色和字体颜色都是不能改变的。默认为黑色。

Android 4.4到5.0(不包括5.0)并且非miui和非Flyme系统

在Android系统4.4到5.0(不包括5.0)并且非miui和非Flyme系统,状态栏的背景和字体颜色由系统决定,这里不做兼容。正常有下面两种样式。

Android 5.x系列并且非miui和非Flyme系统

在Android5.系列的系统上,可以设置状态栏的颜色,但不可以改变状态栏字体和图标的颜色。所以这里统一设置为半透明效果,可以通过setStatusBarColor设置状态栏的背景色,但是部分华为机型不支持setStatusBarColor的方式,只能是黑色,至少保证状态栏图标可见。


部分华为机型不支持setStatusBarColor的方式,只能是黑色

这里如果想设置状态栏的颜色和标题栏颜色一样,可以在标题栏上方放一个View,动态的设置view的高度为状态栏的高度。

Android 4.4以上的MIUI和Flyme以及Android6.0以上系统

4.4以上的MIUI和Flyme系统以及Android6.0以上系统机型适配沉浸式状态栏,可以通过StatusBarUtils里面相关方法设置状态栏字体和图标的颜色切换

miui 小米

flyme 魅族

StatusBarUtils如何使用

步骤一
implementation 'com.samlu:statusbarutils:1.0.1'
步骤二
  • 直接在Activity中设置Window属性
protected void onCreate(Bundle savedInstanceState) {
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }
    super.onCreate(savedInstanceState);
}
  • 或者在xml的style文件中设置:
<item name="android:windowTranslucentStatus">true</item> 
android:fitsSystemWindows="true" 
  • 使用android:windowTranslucentStatus属性需要在res目录下新建values-v19文件夹,style文件要放在里面
步骤三
  • 在BaseActivity的onCreate里面调用StatusBarUtils.transparencyBar(this);开启沉浸式状态栏
  • 1.0.1版本增加支持类似支付宝蒙层效果,这样就不需要改变状态栏的字体和图标的颜色。
// isOpen=true开启,false关闭,默认关闭
StatusBarUtils.transparencyBar(Activity activity, boolean isOpen)

/**
  * 开启沉浸式状态栏
  *
  * @param activity
  * @param isOpen 是否开启蒙层效果的状态栏(在5.0以上机型适用)
  */
 public static void transparencyBar(Activity activity, boolean isOpen) {
     isOpenMonLayer = isOpen;
     transparencyBar(activity,0x40000000);
 }
步骤四
  • 在需要设置状态栏黑白字体的Activity里面调用如下方法
// 设置状态栏黑色字体图标 适配4.4以上版本的MIUI、Flyme和6.0以上版本其他Android
StatusBarUtils.StatusBarIconDark(Activity activity)
// 设置状态栏白色字体图标 适配4.4以上版本的MIUI、Flyme和6.0以上版本其他Android
StatusBarUtils.StatusBarIconLight(Activity activity)
  • 如果StatusBarUtils.transparencyBar(Activity activity, boolean isOpen)的isOpen设置为true,上面的方面可以不调用。

Thanks

QMUI

Github

https://github.com/ltym2016/StatusBarUtils

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ltym2014

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值