文章目录
GitHub源码:TransparentStatusbar
源码中分两个app
TestBasic
:- 透明状态栏实现的示例,方便debug
- 白色/红色
Titlebar
的不同处理方式 paddingTop
与fitsSystemWindows
的对比layer-list
分层背景的使用
TitlebarBelowTransparentStatusBar
- 示例App中统一的处理方式
- Activity中的接口设计
- Fragment中的接口设计
认识透明状态栏
从Android4.4
开始引入了透明状态栏的新特性.
见下图,左边为传统的Android
系统状态栏,右边为透明状态栏.
- 正常显示状态栏的图标/文字
- 状态栏的背景是透明的,能透出应用的背景色.而不像之前一样是默认的黑色不可编辑.
透明状态栏Api及特性
从Android 4.4(v19)
开始,透明状态栏特性变化很频繁,直到Android 6.0(v23)
才真正完善稳定.
下表展示各版本所引入的新Api
或特性.
Version/level | Features | Description | |
---|---|---|---|
4.4/v19 | WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | 状态栏是渐变色的半透明 | |
4.4_Watch/v20 | OnApplyWindowInsetsListener | 能够区分多个Inset事件与Rect信息(PS.系统状态栏属于插入区Inset的一种) | |
5.0/v21 | WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
允许自定义状态栏背景色了,但无法控制状态栏上的文字/图标颜色 | |
6.0/v23 | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | 状态栏上的图标/文字颜色的亮色模式,即颜色是暗色 |
设置透明状态栏
根据多个版本间的Api
及特性,Java
代码如下:
|
|
注意: 要设置透明状态栏的
Activity
其