鸿蒙Next环境设备查询Environment用法总结
2024/12/12 23:03:06
本文主要是介绍鸿蒙Next环境设备查询Environment用法总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、概述
Environment是ArkUI框架在应用程序启动时创建的单例对象,用于提供一系列描述应用程序运行状态的属性,其所有属性不可变(应用不可写入)且为简单类型,主要为AppStorage提供设备环境相关信息,以辅助应用根据设备环境做出不同的处理逻辑。
二、Environment内置参数
accessibilityEnabled
:数据类型为boolean
,用于获取无障碍屏幕读取是否启用。colorMode
:类型为ColorMode
,其取值包括ColorMode.LIGHT
(浅色)和ColorMode.DARK
(深色),用于表示色彩模型类型。fontScale
:数据类型为number
,表示字体大小比例,范围在[0.85, 1.45]
之间。fontWeightScale
:也是number
类型,用于表示字体粗细程度,范围是[0.6, 1.6]
。layoutDirection
:类型为LayoutDirection
,包含LayoutDirection.LTR
(从左到右)和LayoutDirection.RTL
(从右到左),用于确定布局方向类型。languageCode
:string
类型,存储当前系统语言值,且取值必须为小写字母,例如zh
。
三、使用场景
(一)从UI中访问Environment参数
- 存入AppStorage并链接到Component
- 使用
Environment.envProp('languageCode', 'en');
将设备运行的环境变量(如语言code)存入AppStorage,其中'en'
为默认值。 - 然后可以在组件中使用
@StorageProp('languageCode') lang : string = 'en';
将其链接到Component中,实现设备环境到Component的更新链:Environment --> AppStorage --> Component
。 - 注意,
@StorageProp
关联的环境参数可以在本地更改,但不能同步回AppStorage中,因为应用对环境变量参数不可写,只能查询。例如:
- 使用
// 将设备languageCode存入AppStorage中 Environment.envProp('languageCode', 'en'); @Entry @Component struct Index { @StorageProp('languageCode') languageCode: string = 'en'; build() { Row() { Column() { // 输出当前设备的languageCode Text(this.languageCode) } } } }
(二)应用逻辑使用Environment
- 获取并使用环境变量
- 首先使用
Environment.envProp('languageCode', 'en');
将设备运行的languageCode
存入AppStorage。 - 接着从AppStorage获取单向绑定的
languageCode
变量,如const lang: SubscribedAbstractProperty<string> = AppStorage.prop('languageCode');
,然后根据该变量的值进行逻辑判断,例如:
- 首先使用
// 使用Environment.EnvProp将设备运行languageCode存入AppStorage中; Environment.envProp('languageCode', 'en'); // 从AppStorage获取单向绑定的languageCode的变量 const lang: SubscribedAbstractProperty<string> = AppStorage.prop('languageCode'); if (lang.get() === 'zh') { console.info('你好'); } else { console.info('Hello!'); }
四、限制条件
Environment和UIContext相关联,需要在UIContext明确的时候才可以调用。通常可以通过在runScopedTask
里明确上下文,否则将导致无法查询到设备环境数据。例如在EntryAbility.ets
中:
import { UIAbility } from '@kit.AbilityKit'; import { window } from '@kit.ArkUI'; export default class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage) { windowStage.loadContent('pages/Index'); let window = windowStage.getMainWindow() window.then(window => { let uicontext = window.getUIContext() uicontext.runScopedTask(() => { Environment.envProp('languageCode', 'en'); }) }) } }
这篇关于鸿蒙Next环境设备查询Environment用法总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南