Android api 30+ 可用新的api实现沉浸式状态栏等方案

状态栏字体颜色修改:
//状态栏字体改为白色

1
WindowCompat.getInsetsController(window,window.decorView).isAppearanceLightStatusBars = false

//状态栏字体改为黑色

1
WindowCompat.getInsetsController(window,window.decorView).isAppearanceLightStatusBars = true

在API 11及其以上 Window Tranfer flag已经过时了,我们使用如下的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
window.statusBarColor = Color.TRANSPARENT
window.navigationBarColor = Color.TRANSPARENT
//内容扩展到状态栏
WindowCompat.setDecorFitsSystemWindows(window, false)

ViewCompat.getWindowInsetsController(window.decorView)?.run {
    //隐藏系统栏
   this.hide(WindowInsetsCompat.Type.statusBars())
   this.hide(WindowInsetsCompat.Type.navigationBars())
   //系统栏的行为:滑动显示系统栏
   this.systemBarsBehavior = BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}

Android 沉浸式状态/导航栏的实现以及布局重叠的适配(Kotlin)
Android Detail:Window 篇—— WindowInsets 与 fitsSystemWindow
WindowInsetsControllerCompat使用,新方式实现状态栏、导航栏、键盘控制
Android 实现沉浸式全屏的总结
【Android爬坑日记】沉浸式状态栏
Android 系统 Bar 沉浸式完美兼容方案
Android 全屏显示和沉浸式显示