HarmonyOS应用采用Gradle进行项目管理,因此与Maven类似,应用的资源文件(字符串、图片、音频等)都存放于resources目录下,便于开发者使用和维护,如图4-9所示。
图4-9 resources目录
resources目录包括两大类,一类为base目录与限定词目录,另一类为rawfile目录,详见表4-1。
表4-1 resources的两大类目录
限定词目录可以由一个或多个表征应用场景或设备特征的限定词组合而成,包括语言、文字、国家或地区、横竖屏、设备类型和屏幕密度六个维度,限定词之间通过下划线(_)或者中划线(-)连接。开发者在创建限定词目录时,需要掌握限定词目录的命名要求以及限定词目录与设备状态的匹配规则。
1. 限定词目录的命名要求
(1)限定词的组合顺序:语言_文字_国家或地区-横竖屏-设备类型-屏幕密度。开发者可以根据应用的使用场景和设备特征,选择其中的一类或几类限定词组成目录名称。
(2)限定词的连接方式:语言、文字、国家或地区之间采用下划线(_)连接,其他限定词之间均采用中划线(-)连接,如zh_Hant_CN、zh_CN-car-ldpi。
(3)限定词的取值范围:每类限定词的取值必须符合表4-2中的要求,否则将无法匹配目录中的资源文件。
表4-2 限定词取值要求
2. 限定词目录与设备状态的匹配规则
在为设备匹配对应的资源文件时,限定词目录匹配的优先级从高到低依次为区域(语言_文字_国家或地区)> 横竖屏 > 设备类型 > 屏幕密度。
如果限定词目录中包含语言、文字、横竖屏、设备类型限定词,则对应限定词的取值必须与当前的设备状态完全一致,该目录才能参与设备的资源匹配。例如,限定词目录zh_CN-car-ldpi不能参与en_US设备的资源匹配。
在base目录与限定词目录下可以创建资源组目录(包括element、media、animation、layout、graphic、profile),用于存放特定类型的资源文件。
1. element
element表示元素资源,以下每一类数据都采用相应的JSON文件来表征。
· boolean:布尔型。
· color:颜色。
· float:浮点型。
· intarray:整型数组。
· integer:整型。
· pattern:样式。
· plural:复数形式。
· strarray:字符串数组。
· string:字符串。
element目录中的文件名称建议与如下文件名保持一致:boolean.json、color.json、float.json、intarray.json、integer.json、pattern.json、plural.json、strarray.json、string.json。每个文件中只能包含同一类型的数据。
2. media
media表示媒体资源,包括图片、音频、视频等非文本格式的文件。其文件名可自定义,如icon.png。
3. animation
animation表示动画资源,采用XML文件格式。其文件名可自定义,如zoom_in.xml。
4. layout
layout表示布局资源,采用XML文件格式。其文件名可自定义,如home_layout.xml。
5. graphic
graphic表示可绘制资源,采用XML文件格式。其文件名可自定义,如notifications_dark.xml。
6. profile
profile表示其他类型文件,以原始文件形式保存。其文件名可自定义。