卡片工程可以访问的资源,包括JS模块的resources资源,应用resources资源(所有JS模块共享)和系统预置资源。
资源限定词
资源限定词可以由一个或多个表征应用场景或设备特征的限定词组合而成,包括深色模式、屏幕密度等维度,限定词之间通过中划线(-)连接。开发者在resources目录下创建限定词文件时,需要掌握限定词文件的命名要求以及与限定词文件与设备状态的匹配规则。
资源限定词的命名要求
- 限定词的组合顺序:深色模式-屏幕密度。开发者可以根据应用的使用场景和设备特征,选择其中的一类或几类限定词组成目录名称,顺序不可颠倒。
- 限定词的连接方式:限定词之间均采用中划线(-)连接。例如:res-dark-ldpi.json 。
- 限定词的取值范围:每类限定词的取值必须符合下表的条件,否则,将无法匹配目录中的资源文件,限定词大小写敏感。
- 限定词前缀:resources资源文件的资源限定词有前缀res,例如res-ldpi.json。
- 默认资源限定文件:resources资源文件的默认资源限定文件为res-defaults.json。
- 资源限定文件中不支持使用枚举格式的颜色来设置资源。
![HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区 HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区](https://dl-harmonyos.51cto.com/images/202110/1936f9a30c94fcaf1ba836a788349bb83781d9.png?x-oss-process=image/resize,w_544,h_148)
![HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区 HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区](https://dl-harmonyos.51cto.com/images/202110/f4cd2f1967fa049d42951089aeee3d906ca3f9.png?x-oss-process=image/resize,w_544,h_614)
限定词与设备状态的匹配规则
- 在为设备匹配对应的资源文件时,限定词目录匹配的优先级从高到低依次为:深色模式 > 屏幕密度。在资源限定词目录均未匹配的情况下,则匹配默认资源限定文件。
- 如果限定词目录中包含资源限定词,则对应限定词的取值必须与当前的设备状态完全一致,该目录才能够参与设备的资源匹配。例如:资源限定文件res-hdpi.json与当前设备密度xhdpi无法匹配。
引用JS模块内resources资源
在应用开发的hml和js文件中使用$r的语法,可以对JS模块内的resources目录下的json资源进行格式化,获取相应的资源内容。
![HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区 HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区](https://dl-harmonyos.51cto.com/images/202110/c2e67525843b2d51f49128d58a9b8663ac0cc9.png?x-oss-process=image/resize,w_557,h_358)
示例
resources/res-dark.json:
![HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区 HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区](https://dl-harmonyos.51cto.com/images/202110/030568e65011067de069783ea296c07b407fbf.png?x-oss-process=image/resize,w_559,h_223)
resources/res-defaults.json:
![HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区 HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区](https://dl-harmonyos.51cto.com/images/202110/c5aa81e579f355abdb52681cc7b5977ee030f2.png?x-oss-process=image/resize,w_456,h_222)
![HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区 HarmonyOS服务卡片开发-资源访问学习-鸿蒙开发者社区](https://dl-harmonyos.51cto.com/images/202110/45f3b63494cb02842368855f89a3b6089ae00f.png?x-oss-process=image/resize,w_563,h_89)
说明
资源限定文件中不支持颜色枚举格式。
本文主要参考HarmonyOS官方文档材料整理。