public void onSystemBarAppearanceChanged( int displayId, @WindowInsetsController.Appearance int appearance, AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme) 参数详解
时间: 2024-02-14 13:23:11 浏览: 139
AMD_EDID_DisplayID_Example.txt
`onSystemBarAppearanceChanged()` 方法是 Android 11(API level 30) 中新增的一个回调方法,用于监听系统状态栏和导航栏的外观变化。方法签名如下:
```java
public void onSystemBarAppearanceChanged(int displayId, @WindowInsetsController.Appearance int appearance, AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme)
```
该方法的参数含义如下:
- `displayId`:标识状态栏和导航栏所在的显示器 ID。
- `appearance`:状态栏和导航栏的外观类型。该参数的取值可以是 `WINDOW_INSETS_APPEARANCE_LIGHT_STATUS_BARS`、`WINDOW_INSETS_APPEARANCE_LIGHT_NAVIGATION_BARS` 或 `WINDOW_INSETS_APPEARANCE_OPAQUE_STATUS_BARS`。其中,`WINDOW_INSETS_APPEARANCE_LIGHT_STATUS_BARS` 表示状态栏为浅色,`WINDOW_INSETS_APPEARANCE_LIGHT_NAVIGATION_BARS` 表示导航栏为浅色,`WINDOW_INSETS_APPEARANCE_OPAQUE_STATUS_BARS` 表示状态栏为不透明。
- `appearanceRegions`:状态栏和导航栏的外观区域。该参数是一个 AppearanceRegion 数组,每个 AppearanceRegion 表示一个外观区域,包括区域的矩形范围、区域的类型和区域的稳定性等信息。该参数可以为空数组,表示没有外观区域。
- `navbarColorManagedByIme`:导航栏的颜色是否由输入法管理。该参数为布尔值,如果为 `true`,表示导航栏的颜色由输入法管理;如果为 `false`,表示导航栏的颜色不由输入法管理。
需要注意的是,`onSystemBarAppearanceChanged()` 方法只有在以下情况下才会被调用:
- 当系统栏的可见性发生变化时,比如状态栏或导航栏由不可见变为可见,或者由可见变为不可见。
- 当系统栏的样式发生变化时,比如状态栏或导航栏的前景、背景或图标颜色发生变化。
希望我的解答对你有所帮助。
阅读全文