项目作者: zhang3550545

项目描述 :
android沉浸式状态栏StatusBar在多种Window的实现
高级语言: Java
项目地址: git://github.com/zhang3550545/StatusBar.git
创建时间: 2017-06-16T05:26:37Z
项目社区:https://github.com/zhang3550545/StatusBar

开源协议:

下载


android沉浸式状态栏StatusBar实例

StatusBar沉浸式的2种实现方式

对于沉浸式状态栏的实现,我觉得有两种实现方式

一是:将状态栏的颜色和状态栏下面的View颜色保持一致或相近。如图:

image

二是:将View充满全屏,状态栏覆盖在View上,将状态栏设置为透明色

image

StatusBar沉浸式实现的真相

我们使用Android Studio的提供的截图工具Layout Inspector工具分析可以知道,实际上显示时间、信号等SystemBar是系统级别的一个Window(悬浮窗)。而StatusBar是SystemBar下面的View,是DecorView的一部分。我们通常设置StatusBar的颜色其实就是给SystemBar覆盖的StatusBar设置一个背景色。

LayoutInspetor工具的截图:

image

由上图可知,StatusBar是DecorView的一部分,是一个View设置了背景色,没有系统的时间、信号等信息。

所以我们所设置状态栏的颜色,就是设置DecorView中的StatusBar的View的颜色。

image

上图说明:ImageView占满了怎个DecorView,没有StatusBar。

StatusBar的在不同Window上的实现

我们不管是Activity,Fragment还是在DialogFragment以及Window悬浮窗,都是有可能有使用沉浸式状态栏的。那么如何实现呢,以下实现是基于Android5.0以上,对Android4.4不兼容?

具体实现看代码: