OpenHarmony开发者论坛
标题:
如何获取设备横竖屏的状态变化通知
[打印本页]
作者:
妮巴~😘
时间:
2023-9-11 09:49
标题:
如何获取设备横竖屏的状态变化通知
[md]【问题描述】当设备发生横竖屏变化时,开发者应如何获取到变化的事件通知?
【运行环境】硬件:rk3568; ROM: 3.2 ; API 9
[/md]
作者:
马迪
时间:
2023-9-16 21:38
[md]使用UIAbility.onConfigurationUpdate()回调方法订阅系统环境变量的变化(包括语言,颜色模式,屏幕方向等)。
UIAbility组件提供了`UIAbility.onConfigurationUpdate()`回调方法用于订阅系统环境变量的变化。当系统环境变量发生变化时,会调用该回调方法。在该方法中,通过[Configuration](
https://gitee.com/openharmony/do ... ty-configuration.md
)对象获取最新的系统环境配置信息,而无需重启UIAbility。
例如,在`onConfigurationUpdate()`回调方法中实现监测系统语言的变化。
```
import UIAbility from '@ohos.app.ability.UIAbility';
import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import Want from '@ohos.app.ability.Want';
import { Configuration } from '@ohos.app.ability.Configuration';
let systemLanguage: string | undefined; // 系统当前语言
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
systemLanguage = this.context.config.language; // UIAbility实例首次加载时,获取系统当前语言
console.info(`systemLanguage is ${systemLanguage} `);
}
onConfigurationUpdate(newConfig: Configuration) {
console.info(`onConfigurationUpdated systemLanguage is ${systemLanguage}, newConfig: ${JSON.stringify(newConfig)}`);
if (systemLanguage !== newConfig.language) {
console.info(`systemLanguage from ${systemLanguage} changed to ${newConfig.language}`);
systemLanguage = newConfig.language; // 将变化之后的系统语言保存,作为下一次变化前的系统语言
}
}
// ...
}
```
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5