AOSP 11 CarSystemUI 如何监听 getWindow().setStatusBarColor(Color.TRANSPARENT);
时间: 2024-03-20 13:44:04 浏览: 86
在 AOSP 11 中,CarSystemUI 可以使用 `WindowInsetsController` 类来监听 `getWindow().setStatusBarColor(Color.TRANSPARENT)` 方法的调用。具体实现如下:
1. 在 `onCreate()` 方法中获取 `WindowInsetsController` 对象:
```
WindowInsetsController insetsController = getWindow().getInsetsController();
```
2. 在 `WindowInsetsController` 对象上调用 `setSystemBarsAppearance()` 方法来添加窗口插入监听器,监听状态栏颜色的变化:
```
insetsController.setSystemBarsAppearance(0, View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION, View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR, View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
insetsController.addOnControllableInsetsChangedListener(insets -> {
// 在这里处理状态栏颜色的变化
});
```
3. 在 `addOnControllableInsetsChangedListener()` 方法中,可以使用 `insets.getInsetsIgnoringVisibility(WindowInsetsCompat.Type.systemBars())` 方法来获取状态栏的高度,并根据需要进行处理。
注意:在使用 `WindowInsetsController` 类时,需要在 `build.gradle` 文件中添加如下依赖:
```
implementation 'androidx.core:core:1.6.0'
```
阅读全文