小型网站网站建设需要,中国互联网站建设,物业公司取名字大全免费,竞价排名是什么资源分类与访问
应用开发过程中#xff0c;经常需要用到颜色、字体、间距、图片等资源#xff0c;在不同的设备或配置中#xff0c;这些资源的值可能不同。
应用资源#xff1a;借助资源文件能力#xff0c;开发者在应用中自定义资源#xff0c;自行管理这些资源在不同…资源分类与访问
应用开发过程中经常需要用到颜色、字体、间距、图片等资源在不同的设备或配置中这些资源的值可能不同。
应用资源借助资源文件能力开发者在应用中自定义资源自行管理这些资源在不同的设备或配置中的表现。系统资源开发者直接使用系统预置的资源定义即分层参数同一资源ID在设备类型、深浅色等不同配置下有不同的取值。
资源分类
resources目录
应用开发中使用的各类资源文件需要放入特定子目录中存储管理。resources目录包括三大类目录一类为base目录一类为限定词目录还有一类为rawfile目录。stage模型多工程情况下共有的资源文件放到AppScope下的resources目录。
base目录默认存在而限定词目录需要开发者自行创建。应用使用某资源时系统会根据当前设备状态优先从相匹配的限定词目录中寻找该资源。只有当resources目录中没有与设备状态匹配的限定词目录或者在限定词目录中找不到该资源时才会去base目录中查找。rawfile是原始文件目录不会根据设备状态去匹配不同的资源。
资源目录示例
resources
|---base
| |---element
| | |---string.json
| |---media
| | |---icon.png
| |---profile
| | |---test_profile.json
|---en_US // 默认存在的目录设备语言环境是美式英文时优先匹配此目录下资源
| |---element
| | |---string.json
| |---media
| | |---icon.png
| |---profile
| | |---test_profile.json
|---zh_CN // 默认存在的目录设备语言环境是简体中文时优先匹配此目录下资源
| |---element
| | |---string.json
| |---media
| | |---icon.png
| |---profile
| | |---test_profile.json
|---en_GB-vertical-car-mdpi // 自定义多限定词目录示例由开发者创建
| |---element
| | |---string.json
| |---media
| | |---icon.png
| |---profile
| | |---test_profile.json
|---rawfile // 其他类型文件原始文件形式保存不会被集成到resources.index文件中。文件名可自定义。表1 resources目录分类
分类base目录限定词目录rawfile目录组织形式base目录是默认存在的目录。当应用的resources目录中没有与设备状态匹配的限定词目录时会自动引用该目录中的资源文件。base目录的二级子目录为资源组目录用于存放字符串、颜色、布尔值等基础元素以及媒体、动画、布局等资源文件具体要求参见资源组目录。en_US和zh_CN是默认存在的两个限定词目录其余限定词目录需要开发者自行创建。目录名称由一个或多个表征应用场景或设备特征的限定词组合而成具体要求参见限定词目录。限定词目录的二级子目录为资源组目录用于存放字符串、颜色、布尔值等基础元素以及媒体、动画、布局等资源文件具体要求参见资源组目录。支持创建多层子目录目录名称可以自定义文件夹内可以自由放置各类资源文件。rawfile目录的文件不会根据设备状态去匹配不同的资源。编译方式目录中的资源文件会被编译成二进制文件并赋予资源文件ID。目录中的资源文件会被编译成二进制文件并赋予资源文件ID。目录中的资源文件会被直接打包进应用不经过编译也不会被赋予资源文件ID。引用方式通过指定资源类型type和资源名称name来引用。通过指定资源类型type和资源名称name来引用。通过指定文件路径和文件名来引用。
限定词目录
限定词目录可以由一个或多个表征应用场景或设备特征的限定词组合而成包括移动国家码和移动网络码、语言、文字、国家或地区、横竖屏、设备类型、颜色模式和屏幕密度等维度限定词之间通过下划线_或者中划线-连接。开发者在创建限定词目录时需要掌握限定词目录的命名要求以及限定词目录与设备状态的匹配规则。
限定词目录的命名要求
限定词的组合顺序移动国家码_移动网络码-语言_文字_国家或地区-横竖屏-设备类型-颜色模式-屏幕密度。开发者可以根据应用的使用场景和设备特征选择其中的一类或几类限定词组成目录名称。限定词的连接方式语言、文字、国家或地区之间采用下划线连接移动国家码和移动网络码之间也采用下划线连接除此之外的其他限定词之间均采用中划线-连接。例如zh_Hant_CN、zh_CN-car-ldpi。限定词的取值范围每类限定词的取值必须符合限定词取值要求表中的条件否则将无法匹配目录中的资源文件。
表2 限定词取值要求
限定词类型含义与取值说明移动国家码和移动网络码移动国家码MCC和移动网络码MNC的值取自设备注册的网络。MCC后面可以跟随MNC使用下划线_连接也可以单独使用。例如mcc460表示中国mcc460_mnc00表示中国_中国移动。详细取值范围请查阅ITU-T E.212国际电联相关标准。语言表示设备使用的语言类型由2~3个小写字母组成。例如zh表示中文en表示英语mai表示迈蒂利语。详细取值范围请查阅ISO 639ISO制定的语言编码标准。文字表示设备使用的文字类型由1个大写字母首字母和3个小写字母组成。例如Hans表示简体中文Hant表示繁体中文。详细取值范围请查阅ISO 15924ISO制定的文字编码标准。国家或地区表示用户所在的国家或地区由2~3个大写字母或者3个数字组成。例如CN表示中国GB表示英国。详细取值范围请查阅ISO 3166-1ISO制定的国家和地区编码标准。横竖屏表示设备的屏幕方向取值如下- vertical竖屏- horizontal横屏设备类型表示设备的类型取值如下- car车机- tv智慧屏- wearable智能穿戴颜色模式表示设备的颜色模式取值如下- dark深色模式- light浅色模式屏幕密度表示设备的屏幕密度单位为dpi取值如下- sdpi表示小规模的屏幕密度Small-scale Dots Per Inch适用于dpi取值为(0, 120]的设备。- mdpi表示中规模的屏幕密度Medium-scale Dots Per Inch适用于dpi取值为(120, 160]的设备。- ldpi表示大规模的屏幕密度Large-scale Dots Per Inch适用于dpi取值为(160, 240]的设备。- xldpi表示特大规模的屏幕密度Extra Large-scale Dots Per Inch适用于dpi取值为(240, 320]的设备。- xxldpi表示超大规模的屏幕密度Extra Extra Large-scale Dots Per Inch适用于dpi取值为(320, 480]的设备。- xxxldpi表示超特大规模的屏幕密度Extra Extra Extra Large-scale Dots Per Inch适用于dpi取值为(480, 640]的设备。
限定词目录与设备状态的匹配规则
在为设备匹配对应的资源文件时限定词目录匹配的优先级从高到低依次为移动国家码和移动网络码 区域可选组合语言、语言_文字、语言_国家或地区、语言_文字_国家或地区 横竖屏 设备类型 颜色模式 屏幕密度。如果限定词目录中包含移动国家码和移动网络码、语言、文字、横竖屏、设备类型、颜色模式限定词则对应限定词的取值必须与当前的设备状态完全一致该目录才能够参与设备的资源匹配。例如限定词目录“zh_CN-car-ldpi”不能参与“en_US”设备的资源匹配。
资源组目录
base目录与限定词目录下面可以创建资源组目录包括element、media、profile用于存放特定类型的资源文件详见资源组目录说明。
表3 资源组目录说明
资源组目录目录说明资源文件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.jsonmedia表示媒体资源包括图片、音频、视频等非文本格式的文件目录下只支持文件类型。文件名可自定义例如icon.png。profile表示自定义配置文件其文件内容可通过包管理接口获取目录下只支持文件类型。文件名可自定义例如test_profile.json。
媒体资源类型说明
表4 图片资源类型说明
格式文件后缀名JPEG.jpgPNG.pngGIF.gifSVG.svgWEBP.webpBMP.bmp
表5 音视频资源类型说明
格式支持的文件类型H.263.3gp.mp4H.264 AVCBaseline Profile (BP).3gp.mp4MPEG-4 SP.3gpVP8.webm.mkv
资源文件示例
color.json文件的内容如下
{color: [{name: color_hello,value: #ffff0000},{name: color_world,value: #ff0000ff}]
}float.json文件的内容如下
{float:[{name:font_hello,value:28.0fp},{name:font_world,value:20.0fp}]
}string.json文件的内容如下
{string:[{name:string_hello,value:Hello},{name:string_world,value:World},{name:message_arrive,value:We will arrive at %s.}]
}plural.json文件的内容如下
{plural:[{name:eat_apple,value:[{quantity:one,value:%d apple},{quantity:other,value:%d apples}]}]
}资源访问
应用资源
创建资源文件
在resources目录下可按照限定词目录和资源组目录的说明创建子目录和目录内的文件。
同时DevEco Studio也提供了创建资源目录和资源文件的界面。 创建资源目录及资源文件 在resources目录右键菜单选择“New Resource File”此时可同时创建目录和文件。文件默认创建在base目录的对应资源组下。如果选择了限定词则会按照命名规范自动生成限定词资源组目录并将文件创建在目录中。图中Avaliable qualifiers为供选择的限定词目录通过右边的小箭头可添加或者删除。File name为需要创建的文件名Resource type为资源组类型默认是element。Root Element为资源类型。创建的目录名自动生成格式固定为“限定词.资源组”例如创建一个限定词为dark的element目录自动生成的目录名称为“dark.element”。 创建资源目录 在resources目录右键菜单选择“New Resource Directory”此时可创建资源目录。资源目录创建的是base目录也可根据需求创建其它限定词目录。确定限定词后选择资源组类型当前资源组类型支持Element、Media、Profile三种创建后自动生成目录名称。 创建资源文件 在资源目录的右键菜单选择“New XXX Resource File”即可创建对应资源组目录的资源文件。例如在element目录下可新建Element Resource File。
访问应用资源
在工程中通过$r(‘app.type.name’)的形式引用应用资源。app代表是应用内resources目录中定义的资源type代表资源类型或资源的存放位置可以取“color”、“float”、“string”、“plural”、“media”name代表资源命名由开发者定义资源时确定。
引用rawfile下资源时使用$rawfile(‘filename’)“的形式filename需要表示为rawfile目录下的文件相对路径文件名需要包含后缀路径开头不可以以”/开头。
访问rawfile文件的descriptor时可使用资源管理getRawFd接口其返回值descriptor.fd为hap包的fd访问此rawfile文件需要结合{fd, offset, length}一起使用。
说明
资源描述符不能拼接使用仅支持普通字符串如’app.type.name’。
$r返回值为Resource对象可通过getStringValue 方法获取对应的字符串。
在xxx.ets文件中可以使用在resources目录中定义的资源。资源分类中资源组目录下的“资源文件示例”显示了.json文件内容包含color.json文件、float.json文件、string.json和plural.json文件。应用资源的具体使用方法如下
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代表单数取值为1other代表复数取值为大于等于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目录下图片系统资源
系统资源包含色彩、圆角、字体、间距、字符串及图片等。通过使用系统资源不同的开发者可以开发出具有相同视觉风格的应用。
开发者可以通过“$r(‘sys.type.resource_id’)”的形式引用系统资源。sys代表是系统资源type代表资源类型可以取“color”、“float”、“string”、“media”resource_id代表资源id。
说明
仅声明式开发范式支持使用系统资源类Web开发范式不支持。
Text(Hello).fontColor($r(sys.color.ohos_id_color_emphasize)).fontSize($r(sys.float.ohos_id_text_size_headline1)).fontFamily($r(sys.string.ohos_id_text_font_family_medium)).backgroundColor($r(sys.color.ohos_id_color_palette_aux1))Image($r(sys.media.ohos_app_icon)).border({color: $r(sys.color.ohos_id_color_palette_aux1),radius: $r(sys.float.ohos_id_corner_radius_button), width: 2}).margin({top: $r(sys.float.ohos_id_elements_margin_horizontal_m),bottom: $r(sys.float.ohos_id_elements_margin_horizontal_l)}).height(200).width(300)
er({color: $r(sys.color.ohos_id_color_palette_aux1),radius: $r(sys.float.ohos_id_corner_radius_button), width: 2}).margin({top: $r(sys.float.ohos_id_elements_margin_horizontal_m),bottom: $r(sys.float.ohos_id_elements_margin_horizontal_l)}).height(200).width(300)