本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
WindowInsetsControllerCompat
是 Android 中的一个类,用于更方便地处理和控制窗口插入 (Window Insets),例如状态栏和导航栏的显示和隐藏。这个类是 Android 视图系统的一部分,提供了对窗口内嵌元素的更现代和灵活的控制方法。
这是一个位于 androidx.core.view
包中的类,旨在增强对不同 Android 版本的兼容性。它简化了在不同 API 级别上控制系统窗口插入的复杂性,使得开发者能够更轻松地处理状态栏和导航栏的显示/隐藏、动画过渡等操作。
主要功能
1、 显示和隐藏状态栏、导航栏:
使用 WindowInsetsControllerCompat
,你可以轻松地控制状态栏和导航栏的显示与隐藏。
2、 控制系统窗口的行为:
你可以控制系统窗口的行为模式,例如 BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
,允许用户通过滑动手势临时显示系统栏。
3、 设置系统窗口插入的样式:
例如,可以设置状态栏和导航栏的亮色或暗色(浅色主题下的深色文本和图标,或者深色主题下的浅色文本和图标)。
代码示例
下面通过 Kotlin 代码示例展示如何使用 WindowInsetsControllerCompat
来实现上述功能。
初始化 WindowInsetsControllerCompat
首先,我们需要初始化 WindowInsetsControllerCompat
。这通常是在 Activity
或者 Fragment
中完成的。
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
val windowInsetsController = WindowInsetsControllerCompat(window, window.decorView)
隐藏状态栏和导航栏
通过设置 WindowInsetsCompat.Type.statusBars()
和 WindowInsetsCompat.Type.navigationBars()
可以控制状态栏和导航栏的显示和隐藏。
windowInsetsController.hide(WindowInsetsCompat