首先我们来了解一下几个设置沉浸式状态栏的基础属性:

1.View.SYSTEM_UI_FLAG_LOW_PROFILE:低调模式, 会隐藏不重要的状态栏图标;

2.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏导航栏;

3.View.SYSTEM_UI_FLAG_FULLSCREEN:状态栏隐藏(高度不变);

4.View.SYSTEM_UI_FLAG_LAYOUT_STABLE:保持整个View稳定, 常和控制System UI悬浮, 隐藏的Flags共用, 使View不会因为System UI的变化而重新layout;

5.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:视图延伸至导航栏区域,导航栏覆盖在视图之上(在style中设置windowTranslucentNavigation);

6.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN :视图延伸至状态栏区域,状态栏覆盖在视图之上(在style中设置windowTranslucentStatus);

7.View.SYSTEM_UI_FLAG_IMMERSIVE:配合2或3同时使用,假设同时设置了2和7,状态栏隐藏,此时在状态栏顶部下滑,系统清除2设置,重新唤出状态栏,导航栏同理,滑动方向为由下至上;

8.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY:作用与7相似,但是设置并未被清楚,所以状态栏与导航栏

在被唤出3s后或再次点击时,再次隐藏。

沉浸式状态栏设置现在普遍应用的有以下几种方法:

1,对外层布局设置android:fitsSystemWindows="true"的同时,修改状态栏背景色;

2,根布局里添加占位状态栏,并设置状态栏透明;

3,通过调用setSystemUiVisibility(int visibility),设置上边提到的FLAG(SYSTEM_UI_FLAG_FULLSCREEN)。

在一些特殊页面,比如开屏图这种需要整张图片,并隐藏状态栏的时候,就需要用第三种方法;

本来上边几种方式对于处理沉浸式状态栏已经足够了,但是因为出现了万恶的刘海屏手机,在某些机型上,设置FLAG这种方法就会出现问题,如下:

在小米8手机上,当通过设置SYSTEM_UI_FLAG_FULLSCREEN对开屏图页面做沉浸式处理时,发现虽然状态栏隐藏了,但是原状态栏位置上会被黑条占领,而不会像OPPO R17等手机一样,UI可以直接向上延伸。

好在Android P版本为我们提供了解决方法,我们可以通过对Window设置layoutInDisplayCutoutMode来达到我们的目的,先来看一下layoutInDisplayCutoutMode的几种属性

LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT:默认情况下,全屏窗口不会使用到刘海区域,非全屏窗口可正常使用刘海区域

LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER:窗口不允许和刘海屏重叠

LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES :该窗口始终允许延伸到屏幕短边上的DisplayCutout区域。

利用layoutInDisplayCutoutMode解决Android P 刘海屏状态栏适配问题代码如下:

在代码中设置-----

WindowManager.LayoutParams lp = activity.getWindow().getAttributes();

lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;

activity.getWindow().setAttributes(lp);

View decorView = activity.getWindow().getDecorView();

int systemUiVisibility = decorView.getSystemUiVisibility();

int flags =View.SYSTEM_UI_FLAG_HIDE_NAVIGATION//隐藏导航栏

| View.SYSTEM_UI_FLAG_FULLSCREEN;//隐藏状态栏

systemUiVisibility |= flags;

activity.getWindow().getDecorView().setSystemUiVisibility(systemUiVisibility);

在xml中设置theme----

true

shortEdges

true

解决了刘海屏状态栏的适配问题后,发现在代码中设置,当手指在屏幕上滑动时,会导致状态栏与导航栏重新出现,而在xml中设置theme却不会有这样的问题,原理尚不明确,后续会继续跟进这个问题。。。

android 9.0去掉状态栏,安卓9.0沉浸式状态栏相关推荐

  1. Android 安卓 自定义标题栏+沉浸式状态栏

    Android 安卓 自定义标题栏+沉浸式状态栏 由于Android原生的标题栏单调,简单,并不是很好看,自定义个性化的标题栏可以让app更加美观. Android 4.4以后增加了沉浸式透明状态栏. ...

  2. 安卓如何设置沉浸式状态栏,注意处理华为等有虚拟按键的问题

    当前安卓开发中,基本都使用了沉浸时候状态栏,拉伸视觉体验,增大了屏幕空间,但是如何设置沉浸式状态栏呢,这里简单进行介绍: if (Build.VERSION.SDK_INT >= Build.V ...

  3. android 状态栏占位_Android关于沉浸式状态栏的一些总结

    封面.png 一.前言 其实我是不打算写这篇文章的,为什么呢?因为关于沉浸式状态栏的文章太多了,随便google一下就能出来几十上百篇文章,当然这其中有写的好的,也有滥竽充数的.前面在公众号推出了Ma ...

  4. java沉浸状态栏代码,Ionic实现沉浸式状态栏,状态栏与APP融为一体

    在新的项目中,我按照需求需要设计沉浸式状态栏,当然一开始我还不知道这个叫做"沉浸式状态栏",到网上搜索半天都找不到结果.我搜索了"Ionic刘海屏自适应",&q ...

  5. 沉浸式状态栏需要写html,沉浸式状态栏

    android Api21之后的状态栏会默认覆盖半透明遮罩,我们需要新建values-19,values-21 2份styles文件进行适配 Api-19 true true Api-21 false ...

  6. 从0到1优雅实现沉浸式状态栏

    /   今日科技快讯   / 近日,国家计算机病毒中心发布了<移动APP违法违规问题及治理举措>.其中,MOMO陌陌.今日头条.京东金融.云闪付等下载量很高的应用也名列其中. 2016年至 ...

  7. Android开发笔记(一百六十三)高仿京东的沉浸式状态栏

    前面的文章介绍了如何实现广告轮播的Banner效果,本想可以告一段落.然而某天产品经理心血来潮,拿着苹果手机,要求像iOS那样把广告图顶到状态栏这儿.刚接到这需求,不禁倒吸一口冷气,又要安卓开发去实现 ...

  8. 【UI篇】Android 沉浸式状态栏的那些事

    目录 window.decorView.systemUiVisibility 的参数常量 1.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:(>=api16) 2.Vi ...

  9. Android 沉浸式状态栏与华为虚拟按键的冲突处理

    最近在写自己的小东西的时候,遇到了一个Bug,就是沉浸式转态栏与华为虚拟按键的冲突的问题. 先看一下出现问题的图 然后根据网上的一些办法 最多的就是告诉你,在布局文件加这个2个属性 android:f ...

  10. Android 沉浸式状态栏必须要知道的那些事

    Android 的沉浸式状态栏 文章目录 Android 的沉浸式状态栏 前言 一. 什么是沉浸式状态栏? 二.沉浸式状态栏的实现阶段 2.1.Android4.4 - Android 5.0 (AP ...

最新文章

  1. linux 有线网卡,linux下有线网卡出现ADDRCONF(NETDEV_UP): eth0: link is not ready的解决方法...
  2. numpy.random.randint详解
  3. talend工具中往oracle插数据报ORA-01461: can bind a LONG value only for insert into a LONG colum...
  4. 前端开发的模块化和组件化的定义,以及两者的关系?
  5. jquery is 用于查看选择的元素是否匹配选择器。
  6. 管理新语:工作没做好,批评几句,怎么成了诛心
  7. python大列表_Python列表操作大全(非常全)
  8. mysql监控工具-PMM,让你更上一层楼(下)
  9. 电脑连接校园网不自动跳转到登录界面
  10. 微信群二维码活码生成源码
  11. fst和skiplist
  12. 1ke android逆向助手_android逆向助手
  13. Android SDK使用迅雷下载方法
  14. java自行车怎么调档_变速的自行车如何调档
  15. BES(恒玄) 平台 复杂按键 实现
  16. 还在为图片转Excel而烦恼?6种转换方法让你3秒实现转换
  17. Windows10常用快捷键+cmd常见命令码
  18. 重要的统计量(期望、方差、协方差、相关系数、矩)的概念和性质
  19. poj1408 四边形面积
  20. 关于电磁波的几点常识

热门文章

  1. 友盟分享微信提示文字弹出两次
  2. 计算地图两个点的距离 经纬度距离计算
  3. HDU1004-让气球上升
  4. java生成二维码工具类
  5. css 在线颜色选择,CSS3 Only Color Picker 颜色选择器
  6. Linux操作系统安装及应用
  7. 部署一套完整的K8s高可用集群(二进制-V1.20)
  8. 我们是宇宙还是一粒沙?
  9. 阿里巴巴中国站获得1688商品类目 API
  10. 走迷宫C++版本5.0