HarmonyOS鸿蒙Next服务卡片开发-资源访问学习
HarmonyOS鸿蒙Next服务卡片开发-资源访问学习 卡片工程可以访问的资源,包括JS模块的resources资源,应用resources资源(所有JS模块共享)和系统预置资源。
资源限定词
资源限定词可以由一个或多个表征应用场景或设备特征的限定词组合而成,包括深色模式、屏幕密度等维度,限定词之间通过中划线(-)连接。开发者在resources目录下创建限定词文件时,需要掌握限定词文件的命名要求以及与限定词文件与设备状态的匹配规则。
资源限定词的命名要求
- 限定词的组合顺序:深色模式-屏幕密度。开发者可以根据应用的使用场景和设备特征,选择其中的一类或几类限定词组成目录名称,顺序不可颠倒。
- 限定词的连接方式:限定词之间均采用中划线(-)连接。例如:res-dark-ldpi.json。
- 限定词的取值范围:每类限定词的取值必须符合下表的条件,否则,将无法匹配目录中的资源文件,限定词大小写敏感。
- 限定词前缀:resources资源文件的资源限定词有前缀res,例如res-ldpi.json。
- 默认资源限定文件:resources资源文件的默认资源限定文件为res-defaults.json。
- 资源限定文件中不支持使用枚举格式的颜色来设置资源。
类型 | 含义与取值说明
-
深色模式
- 表示设备的深色模式,取值如下:
- dark
- 表示设备的深色模式,取值如下:
-
屏幕密度
- 表示设备的屏幕密度(单位为dpi),取值如下:
- ldpi:表示低密度屏幕(~120dpi)(0.75基准密度)
- mdpi:表示中密度屏幕(~160dpi)(基准密度)
- hdpi:表示高密度屏幕(~240dpi)(1.5基准密度)
- xhdpi:表示加高密度屏幕(~320dpi)(2.0基准密度)
- xxhdpi:表示超超高密度屏幕(~480dpi)(3.0基准密度)
- xxxhdpi:表示超超超高密度屏幕(~640dpi)(4.0基准密度)
- 表示设备的屏幕密度(单位为dpi),取值如下:
说明
如果当前设备的DPI不完全匹配定义的DPI,那么将选取更接近当前设备DPI的资源文件。比如当前设备为2.7*基准密度,会选择res-xxhdpi.json中定义的资源;开发者还可以定义一个res-defaults.json资源文件,用于当对应密度资源文件中没有对应的资源词条时,应用将尝试在res-defaults.json中匹配对应的资源词条,如果仍未查找到对应词条,则图片加载失败。
限定词与设备状态的匹配规则
- 在为设备匹配对应的资源文件时,限定词目录匹配的优先级从高到低依次为:深色模式 > 屏幕密度。在资源限定词目录均未匹配的情况下,则匹配默认资源限定文件。
- 如果限定词目录中包含资源限定词,则对应限定词的取值必须与当前的设备状态完全一致,该目录才能够参与设备的资源匹配。例如:资源限定文件res-hdpi.json与当前设备密度xhdpi无法匹配。
引用JS模块内resources资源
在应用开发的hml和js文件中使用$r
的语法,可以对JS模块内的resources目录下的json资源进行格式化,获取相应的资源内容。
属性 | 类型 | 描述
$r
(key: string) => string
- 获取资源限定下具体的资源内容。例如:this.$r(‘strings.hello’)。
- 参数说明:
- key:定义在资源限定文件中的键值,如strings.hello。
- res-defaults.json示例:
示例
-
resources/res-dark.json:
-
resources/res-defaults.json:
说明
资源限定文件中不支持颜色枚举格式。
本文主要参考HarmonyOS官方文档材料整理。
更多关于HarmonyOS鸿蒙Next服务卡片开发-资源访问学习的实战教程也可以访问 https://www.itying.com/category-93-b0.html
有用的知识批量增加了hahah
抱走了,感谢整理,楼主辛苦~
好家伙,知识点都整理好了我仍然懒得学习
在HarmonyOS鸿蒙Next中,服务卡片开发涉及资源访问的关键步骤如下:
-
资源定义:在
resources
目录下定义图片、字符串等资源。例如,图片放在resources/base/media
,字符串在resources/base/element/string.json
中定义。 -
资源引用:在布局文件
ability_card.xml
中通过$r('app.type.name')
引用资源,如$r('app.media.icon')
引用图片,$r('app.string.app_name')
引用字符串。 -
动态更新:通过
FormProvider
的updateForm
方法动态更新卡片内容,结合ResourceManager
获取资源路径或ID。 -
权限管理:访问敏感资源时,需在
config.json
中声明权限,如ohos.permission.READ_USER_STORAGE
。
了解这些步骤,能有效管理服务卡片中的资源访问,提升用户体验。