RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙OS開發(fā):典型頁面場景【一次開發(fā),多端部署】(資源使用)

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-28 09:44 ? 次閱讀

資源使用

在頁面開發(fā)過程中,經(jīng)常需要用到顏色、字體、間距、圖片等資源,在不同的設(shè)備或配置中,這些資源的值可能不同。有兩種方式處理:

  • [應(yīng)用資源]:借助資源文件能力,開發(fā)者在應(yīng)用中自定義資源,自行管理這些資源在不同的設(shè)備或配置中的表現(xiàn)。
  • [系統(tǒng)資源]:開發(fā)者直接使用系統(tǒng)預(yù)置的資源定義(即分層參數(shù))。
  • 開發(fā)前請熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

應(yīng)用資源

資源文件介紹

應(yīng)用開發(fā)中使用的各類自定義資源文件,需要統(tǒng)一存放于應(yīng)用的resources目錄下,便于使用和維護(hù)。resources目錄包括兩大類目錄,一類為base目錄與限定詞目錄,另一類為rawfile目錄,其基礎(chǔ)目錄結(jié)構(gòu)如下所示。

resources
|---base  // 默認(rèn)存在的目錄
|   |---element
|   |   |---string.json
|   |---media
|   |   |---icon.png
|---en_GB-vertical-car-mdpi // 限定詞目錄示例,需要開發(fā)者自行創(chuàng)建   
|   |---element
|   |   |---string.json
|   |---media
|   |   |---icon.png
|---rawfile  // rawfile目錄

base目錄默認(rèn)存在,而限定詞目錄需要開發(fā)者自行創(chuàng)建,其名稱可以由一個(gè)或多個(gè)表征應(yīng)用場景或設(shè)備特征的限定詞組合而成。應(yīng)用使用某資源時(shí),系統(tǒng)會根據(jù)當(dāng)前設(shè)備狀態(tài)優(yōu)先從相匹配的限定詞目錄中尋找該資源。只有當(dāng)resources目錄中沒有與設(shè)備狀態(tài)匹配的限定詞目錄,或者在限定詞目錄中找不到該資源時(shí),才會去base目錄中查找。rawfile是原始文件目錄,它不會根據(jù)設(shè)備狀態(tài)去匹配不同的資源,故不在本文的討論范文內(nèi)。

說明:

  • 請?jiān)L問[聲明式開發(fā)范式資源文件分類],了解限定詞目錄的命名規(guī)則、創(chuàng)建流程、匹配規(guī)則等,本文不展開介紹。
  • 沒有設(shè)備狀態(tài)匹配的限定詞目錄,或者在限定詞目錄中找不到目標(biāo)資源時(shí),會繼續(xù)在base目錄中查找。 強(qiáng)烈建議對于所有應(yīng)用自定義資源都在base目錄中定義默認(rèn)值 ,防止出現(xiàn)找不到資源值的異常場景。
  • 類Web開發(fā)范式的資源文件路徑及資源限定詞的使用與聲明式范式不同,詳情請參考[類Web開發(fā)范式資源限定與訪問]及[類Web開發(fā)范式文件組織]。

base目錄與限定詞目錄下面可以創(chuàng)建資源組目錄(包括element、media等),用于存放特定類型的資源文件。

資源組目錄目錄說明資源文件
element表示元素資源,以下每一類數(shù)據(jù)都采用相應(yīng)的JSON文件來表征。 - boolean,布爾型 - color,顏色 - float,浮點(diǎn)型 - intarray,整型數(shù)組 - integer,整型 - pattern,樣式 - plural,復(fù)數(shù)形式 - strarray,字符串?dāng)?shù)組 - string,字符串element目錄中的文件名稱建議與下面的文件名保持一致。每個(gè)文件中只能包含同一類型的數(shù)據(jù)。 - boolean.json - color.json - float.json - intarray.json - integer.json - pattern.json - plural.json - strarray.json - string.json
media表示媒體資源,包括圖片、音頻、視頻等非文本格式的文件。文件名可自定義,例如:icon.png。

在element目錄的各個(gè)資源文件中,以“name-value”的形式定義資源,如下所示。而在media目錄中,直接以文件名作為name,故開發(fā)者將文件放入media目錄即可,無需再額外定義name。

// color.json 
{
    "color": [
        {
            "name": "color_red",
            "value": "#ffff0000"
        },
        {
            "name": "color_blue",
            "value": "#ff0000ff"
        }
    ]
}

訪問應(yīng)用資源

在工程中,通過 "$r('app.type.name')" 的形式引用應(yīng)用資源。app代表是應(yīng)用內(nèi)resources目錄中定義的資源;type 代表資源類型(或資源的存放位置),可以取 color、float、string、plural和media,name代表資源命名,由開發(fā)者添加資源時(shí)確定。

說明: 可以查看[聲明式范式訪問應(yīng)用資源],了解資源訪問的更多細(xì)節(jié)。

示例

在應(yīng)用的resources目錄下,創(chuàng)建名為tablet的限定詞子目錄,并按照下表所示,在base目錄和tablet限定詞目錄中添加相應(yīng)的資源。

資源名稱資源類型base目錄中資源值限定詞目錄(tablet)中資源值
my_stringstringdefaulttablet
my_colorcolor#ff0000#0000ff
my_floatfloat60vp80vp
my_imagemediamy_image.png(太陽圖標(biāo))my_image.png(月亮圖標(biāo))

在代碼中通過 "$r('app.type.name')" 的形式使用應(yīng)用資源,并分別在默認(rèn)設(shè)備和平板上查看代碼的運(yùn)行效果,可以發(fā)現(xiàn)同一資源在不同設(shè)備上的取值不同。

zh-cn_image_0000001325731389

@Entry
@Component
struct Index {
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Text($r("app.string.my_string"))
        .fontSize($r("app.float.my_float"))
        .fontColor($r("app.color.my_color"))
      Image($r("app.media.my_image"))
        .width(100)
        .height(100)
    }
    .width('100%')
    .height('100%')
  }
}

系統(tǒng)資源

除了自定義資源,開發(fā)者也可以使用系統(tǒng)中預(yù)定義的資源(即[分層參數(shù)],同一資源ID在設(shè)備類型、深淺色等不同配置下有不同的取值)。

視覺基礎(chǔ)

虛擬像素單位:vp

虛擬像素(virtual pixel)是一臺設(shè)備針對應(yīng)用而言所具有的虛擬尺寸(區(qū)別于屏幕硬件本身的像素單位)。它提供了一種靈活的方式來適應(yīng)不同屏幕密度的顯示效果。

zh-cn_image_0000001517293332

相同的vp,在不同像素密度的屏幕上,對應(yīng)不同px,一般稱px/vp為像素密度比。像素密度比為當(dāng)前設(shè)備屏幕的dpi/160。

在dpi為160的OpenHarmony設(shè)備上,像素密度比為1,則1vp等于1px。

以vp為尺寸標(biāo)注單位,可使相同元素在不同密度的設(shè)備上具有一致的視覺體量,使用px則容易導(dǎo)致體量不一致的問題。

8vp網(wǎng)格系統(tǒng)

基于 8vp 為網(wǎng)格的基本單位可以對界面上元素的大小、位置、對齊方式進(jìn)行更好的規(guī)劃,構(gòu)建更有層次感、秩序感,以及多設(shè)備上一致的布局效果。一些更小的控件(例如圖標(biāo))大小也可以對齊 4vp 的網(wǎng)格大小。

8vp

字體像素單位:fp

字體像素(font pixel) 大小默認(rèn)情況下與 vp 相同,即默認(rèn)情況下 1 fp = 1vp。如果用戶在設(shè)置中選擇了更大的字體,字體的實(shí)際顯示大小就會在 vp 的基礎(chǔ)上乘以 scale 系數(shù),即 1 fp = 1 vp * scale。

視覺屬性:分層參數(shù)

分層參數(shù)是根據(jù)使用場景定義的視覺屬性ID,通過在不同色彩主題、多種設(shè)備上配置不同的數(shù)值,實(shí)現(xiàn)多設(shè)備適配的效果。OpenHarmony的分層參數(shù)包含色彩、字體、圓角、間距、陰影、模糊、縮放,并提供了默認(rèn)實(shí)現(xiàn)。設(shè)備、應(yīng)用、服務(wù)均可在此基礎(chǔ)上管理并自定義不同場景的視覺屬性。

1_zh-cn_image_0000001517612872.png

例如,對于不同場景的主色調(diào)定義了對應(yīng)的ID與默認(rèn)實(shí)現(xiàn)

搜狗高速瀏覽器截圖20240326151450.png

主色調(diào)色值IDHarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
高亮色#007DFFohos_id_color_emphasize
高亮色反色#006CDEohos_id_color_emphasize_contrary
警告色#FA2A2Dohos_id_color_warning
警示色#FF7500ohos_id_color_alert
通訊色#E84826ohos_id_color_handup
通訊色#00CB87ohos_id_color_connected

在開發(fā)過程中,分層參數(shù)的用法與資源限定詞基本一致。開發(fā)者可以通過"$r('sys.type.resource_id')"的形式引用系統(tǒng)資源。sys代表是系統(tǒng)資源;type代表資源類型,值可以取color、float、string和media;resource_id代表資源id。

可以查看[應(yīng)用UX設(shè)計(jì)中關(guān)于資源的介紹],獲取系統(tǒng)支持的資源ID及其在不同配置下的取值。

說明:

  • 僅聲明式開發(fā)范式支持使用分層參數(shù),類Web開發(fā)范式不支持。
  • 系統(tǒng)資源可以保證不同團(tuán)隊(duì)開發(fā)出的應(yīng)用有較為一致的視覺風(fēng)格。對于系統(tǒng)預(yù)置應(yīng)用,強(qiáng)烈建議使用系統(tǒng)資源;對于三方應(yīng)用,可以根據(jù)需要選擇使用系統(tǒng)資源或自定義應(yīng)用資源。
  • 可以查看[resources代碼倉]了解系統(tǒng)預(yù)置資源的實(shí)現(xiàn),這里的目錄結(jié)構(gòu)與工程中的resources目錄類似,也是通過資源限定詞匹配不同的設(shè)備或設(shè)備狀態(tài)。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2339

    瀏覽量

    42805
  • 鴻蒙OS
    +關(guān)注

    關(guān)注

    0

    文章

    188

    瀏覽量

    4382
收藏 人收藏

    評論

    相關(guān)推薦

    HarmonyOS開發(fā)案例:【一次開發(fā),多端部署(視頻應(yīng)用)】

    者提供了“一次開發(fā),多端部署”的系統(tǒng)能力,讓開發(fā)者可以基于一次
    的頭像 發(fā)表于 05-11 15:41 ?1441次閱讀
    HarmonyOS<b class='flag-5'>開發(fā)</b>案例:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>(視頻應(yīng)用)】

    HarmonyOS開發(fā)案例:【一次開發(fā),多端部署-音樂專輯】

    基于自適應(yīng)和響應(yīng)式布局,實(shí)現(xiàn)一次開發(fā)多端部署音樂專輯頁面。
    的頭像 發(fā)表于 05-13 16:48 ?679次閱讀
    HarmonyOS<b class='flag-5'>開發(fā)</b>案例:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>-音樂專輯】

    鴻蒙OS開發(fā):【一次開發(fā),多端部署】應(yīng)用(資源使用)

    頁面開發(fā)過程中,經(jīng)常需要用到顏色、字體、間距、圖片等資源,在不同的設(shè)備或配置中,這些資源的值可能不同。
    的頭像 發(fā)表于 05-21 15:43 ?1007次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】應(yīng)用(<b class='flag-5'>資源</b>使用)

    鴻蒙OS開發(fā):【一次開發(fā)多端部署】(多天氣)項(xiàng)目

    本示例展示個(gè)天氣應(yīng)用界面,包括首頁、城市管理、添加城市、更新時(shí)間彈窗,體現(xiàn)一次開發(fā),多端部署的能力。
    的頭像 發(fā)表于 05-20 14:59 ?837次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(<b class='flag-5'>一</b>多天氣)項(xiàng)目

    鴻蒙OS開發(fā):【一次開發(fā),多端部署】(音樂專輯主頁)

    本示例使用一次開發(fā)多端部署中介紹的自適應(yīng)布局能力和響應(yīng)式布局能力進(jìn)行多設(shè)備(或多窗口尺寸)適配,保證應(yīng)用在不同設(shè)備或不同窗口尺寸下可以正常顯示。
    的頭像 發(fā)表于 05-21 14:48 ?727次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(音樂專輯主頁)

    鴻蒙OS開發(fā):【一次開發(fā)多端部署】(音樂專輯頁面

    基于自適應(yīng)和響應(yīng)式布局,實(shí)現(xiàn)一次開發(fā)、多端部署音樂專輯頁面。
    的頭像 發(fā)表于 05-25 16:21 ?790次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(音樂專輯<b class='flag-5'>頁面</b>)

    鴻蒙OS開發(fā):【一次開發(fā)多端部署】(視頻應(yīng)用)

    者提供了“一次開發(fā),多端部署”的系統(tǒng)能力,讓開發(fā)者可以基于一次
    的頭像 發(fā)表于 05-25 16:29 ?4535次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(視頻應(yīng)用)

    鴻蒙OS開發(fā):【一次開發(fā)多端部署】(典型布局場景

    雖然不同應(yīng)用的頁面千變?nèi)f化,但對其進(jìn)行拆分和分析,頁面中的很多布局場景是相似的。本小節(jié)將介紹如何借助自適應(yīng)布局、響應(yīng)式布局以及常見的容器類組件,實(shí)現(xiàn)應(yīng)用中的典型布局
    的頭像 發(fā)表于 05-25 16:39 ?2142次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(<b class='flag-5'>典型</b>布局<b class='flag-5'>場景</b>)

    鴻蒙OS開發(fā)典型頁面場景一次開發(fā)多端部署】實(shí)戰(zhàn)(音樂專輯頁2)

    本示例使用[一次開發(fā)多端部署]中介紹的自適應(yīng)布局能力和響應(yīng)式布局能力進(jìn)行多設(shè)備(或多窗口尺寸)適配,保證應(yīng)用在不同設(shè)備或不同窗口尺寸下可以正常顯示。
    的頭像 發(fā)表于 05-25 16:47 ?2091次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>典型</b><b class='flag-5'>頁面</b><b class='flag-5'>場景</b>【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】實(shí)戰(zhàn)(音樂專輯頁2)

    鴻蒙OS開發(fā)典型頁面場景一次開發(fā)多端部署】(設(shè)置應(yīng)用頁面

    本小節(jié)以“設(shè)置”應(yīng)用頁面為例,介紹如何使用自適應(yīng)布局能力和響應(yīng)式布局能力適配不同尺寸窗口。
    的頭像 發(fā)表于 05-27 10:33 ?1180次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>典型</b><b class='flag-5'>頁面</b><b class='flag-5'>場景</b>【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(設(shè)置應(yīng)用<b class='flag-5'>頁面</b>)

    鴻蒙OS開發(fā)典型頁面場景一次開發(fā),多端部署】實(shí)戰(zhàn)(設(shè)置典型頁面

    本示例展示了設(shè)置應(yīng)用的典型頁面,其在小窗口和大窗口有不同的顯示效果,體現(xiàn)一次開發(fā)、多端部署的能力
    的頭像 發(fā)表于 05-27 09:36 ?1138次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>典型</b><b class='flag-5'>頁面</b><b class='flag-5'>場景</b>【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】實(shí)戰(zhàn)(設(shè)置<b class='flag-5'>典型</b><b class='flag-5'>頁面</b>)

    鴻蒙OS開發(fā)典型頁面場景一次開發(fā)多端部署】(短信)案例介紹

    本章從系統(tǒng)預(yù)置的應(yīng)用中,選擇短信應(yīng)用作為典型的案例,從頁面開發(fā)和工程結(jié)構(gòu)的角度,介紹"多"的具體實(shí)踐。系統(tǒng)的產(chǎn)品形態(tài)在不斷豐富中,當(dāng)前主要有默認(rèn)設(shè)備和平板兩種產(chǎn)品形態(tài),本章的具體實(shí)踐
    的頭像 發(fā)表于 05-28 15:08 ?1268次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>典型</b><b class='flag-5'>頁面</b><b class='flag-5'>場景</b>【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(短信)案例介紹

    鴻蒙OS開發(fā):【一次開發(fā),多端部署】(多設(shè)備自適應(yīng)能力)簡單介紹

    本示例是《一次開發(fā)多端部署》的配套示例代碼,展示了[頁面開發(fā)
    的頭像 發(fā)表于 05-21 14:59 ?2398次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(多設(shè)備自適應(yīng)能力)簡單介紹

    鴻蒙OS開發(fā):【一次開發(fā),多端部署】( 設(shè)置app頁面

    本示例展示了設(shè)置應(yīng)用的典型頁面,其在小窗口和大窗口有不同的顯示效果,體現(xiàn)一次開發(fā)、多端部署的能力
    的頭像 發(fā)表于 05-21 14:56 ?1042次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】( 設(shè)置app<b class='flag-5'>頁面</b>)

    鴻蒙OS開發(fā)典型頁面場景一次開發(fā),多端部署】(功能開發(fā)

    應(yīng)用開發(fā)至少包含兩部分工作: UI頁面開發(fā)和底層功能開發(fā)(部分需要聯(lián)網(wǎng)的應(yīng)用還會涉及服務(wù)端開發(fā))。前面章節(jié)介紹了如何解決
    的頭像 發(fā)表于 05-28 17:32 ?570次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:<b class='flag-5'>典型</b><b class='flag-5'>頁面</b><b class='flag-5'>場景</b>【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(功能<b class='flag-5'>開發(fā)</b>)
    RM新时代网站-首页