Android 5.0沉浸式状态栏 使用心得

写在前面

  本文提供自己开发中的一些实现心得,希望对各位路过的基友有一定的启发意义。

  1. 框架实现
    我推荐两个实现工具:
    StatusBarUtil
    gyf-dev/ImmersionBar
    具体使用请参考具体文档,这里不作详细介绍。
  2. 自己动手
      在Android 5.0 后,对实现Android 沉浸式状态栏越来越简单,官方提供了很多相关的api,具体文档请移步Android 中国查看相关 api。
    Android 5.0以上在vaues-21下配置xml 达到沉浸式状态栏效果
<item name="android:windowTranslucentStatus">false</item>
<!--Android 5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色-->
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:fitsSystemWindows">true</item>

就这几句代码在Android 5.0 以上基本能满足实现沉浸式状态栏效果了。但是有种特殊情况:在fragment里顶部是图片或纯色和渐变色,顶部状态栏不会全透明,这里就不上图了。
解决这种问题的思路:全屏 + 显示状态栏,为了普通界面能正常显示在界面隐藏后记得清除flag。

//全屏/显示状态栏
   protected void fullScreenOrShowStatusBar(){
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
           Window window = getWindow();
           window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
           window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
       }
   }
//清除
   protected void clearfullScreenOrShowStatusBar(){
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
           Window window = getWindow();
           window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
           window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
       }
   }

 至此,一个项目沉浸式状态栏的适配基本能完美实现了,这里就不去讨论那些走非主流的rom了,我的项目走主流就可以了。
总结:
  个人不喜项目里大大小小一堆框架,喜欢思考根据项目实际情况解决问题。提出此方案在此,欢迎指正 !

    原文作者:Jboob
    原文地址: https://www.jianshu.com/p/8a8541a24f40
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞