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

作者: Jboob | 来源:发表于2018-10-23 16:39 被阅读17次

    写在前面

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

    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了,我的项目走主流就可以了。
    总结:
      个人不喜项目里大大小小一堆框架,喜欢思考根据项目实际情况解决问题。提出此方案在此,欢迎指正 !

    相关文章

      网友评论

        本文标题:Android 5.0沉浸式状态栏 使用心得

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