今天我们来聊一聊鸿蒙开发中必须要搞懂的资源问题。在APP开发中,资源是一个很重要的东东。在不同的设备或配置中,我们往往需要加载不同的资源以达到个性化的适配。例如:颜色、字体、间距、图片等。
这些一般不会在代码里面写死,而是做成资源文件。根据需要读取即可。
资源的分类
一般来说,鸿蒙应用中的资源一般是存放在AppScope下的resources目录。资源目录的示例如下所示,base目录、限定词目录、rawfile目录称为资源目录,element、media、profile称为资源组目录。
用一张图概括:
注意:所有的element、media、profile目录下只能存放文件,无法再创建子目录,否则编译会报错
资源的访问
rawfile目录下的文件,请通过"$rawfile('filename')"形式引用。其他目录下的文件,请通过"$r('app.type.name')"形式引用。所有的资源参数都不需要/开头。
一般$r的参数“app.type.name”中:
app是表示base目录,如果还存在zh_CN或en_US目录时,则会优先去zh_CN或en_US两个目录寻找资源,找不到才会去base中寻找。
type则表示element、media、profile中的一个。
name则表示资源的文件名称。
下面举一些例子:
Text($r('app.string.string_hello'))
.fontColor($r('app.color.color_hello'))
.fontSize($r('app.float.font_hello'))
Text($r('app.string.string_world'))
.fontColor($r('app.color.color_world'))
.fontSize($r('app.float.font_world'))
// 引用string.json资源。Text中$r的第一个参数指定string资源,第二个参数用于替换string.json文件中的%s。
// 如下示例代码value为"We will arrive at five of the clock"。
Text($r('app.string.message_arrive', "five of the clock"))
.fontColor($r('app.color.color_hello'))
.fontSize($r('app.float.font_hello'))
// 引用plural$资源。Text中$r的第一个指定plural资源,第二个参数用于指定单复数(在中文,单复数均使用other。在英文,one:代表单数,取值为1;other:代表复数,取值为大于等于1的整数),第三个参数用于替换%d
// 如下示例代码为复数,value为"5 apples"。
Text($r('app.plural.eat_apple', 5, 5))
.fontColor($r('app.color.color_world'))
.fontSize($r('app.float.font_world'))
Image($r('app.media.my_background_image')) // media资源的$r引用
Image($rawfile('test.png')) // rawfile$r引用rawfile目录下图片
Image($rawfile('newDir/newTest.png')) // rawfile$r引用rawfile目录下图片
怎么样?学会了吗?是不是很简单?
关于菁英老猎人
菁英老猎人拥有12+年的软件开发经验,一直专注于大前端领域,对原生APP开发、混合APP开发和鸿蒙APP开发都有较深入的研究,曾使用cordova、uni-app、React-Native、Flutter做过大量的项目,现在开始研究鸿蒙应用开发,擅长对APP开发的相关知识深入浅出。关注我,带你快速、扎实的学习鸿蒙应用开发。