在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony資源管理詳解 OpenHarmony資源分類和資源的訪問方式

ArkUI詳解 ? 來源:鴻蒙實驗室 ? 作者:鴻蒙實驗室 ? 2022-07-05 06:24 ? 次閱讀

資源管理

本節筆者向讀者介紹一下 OpenHarmony 應用的資源分類和資源的訪問方式。廢話不多說,我們直接開始。

資源分類

移動端應用開發常用到的資源比如圖片,音視頻,字符串等都有固定的存放目錄,OpenHarmony 把這些應用的資源文件統一放在 resources 目錄下的各子目錄中便于開發者使用和維護, resoures 目錄包括兩大類,實際為一類,為 base 目錄與限定詞目錄,另一類為 rawfile 目錄(不知道是不是官方文檔有誤,我已經提了Issue)。新建 OpenHarmony 應用,默認生成的資源目錄如下所示:

image-20220704162100551

base 目錄與限定詞目錄下面可以創建資源組目錄(包括 elementmediaanimationlayoutgraphicprofile 等),用于存放特定類型的資源文件,各資源目錄說明如下圖所示:

資源組目錄

注意,都是以鍵值對的形式存在,name不能重復,value可以重復,但我相信,既然name都不重復,value肯定也不會重復,不然意義何在。

資源組目錄 目錄說明 資源文件
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
media 表示媒體資源,包括圖片、音頻視頻等非文本格式的文件。 文件名可自定義,例如:icon.png。
animation 表示動畫資源,采用XML文件格式。 文件名可自定義,例如:zoom_in.xml。
layout 表示布局資源,采用XML文件格式。 文件名可自定義,例如:home_layout.xml。
graphic 表示可繪制資源,采用XML文件格式。 文件名可自定義,例如:notifications_dark.xml。
profile 表示其他類型文件,以原始文件形式保存。 文件名可自定義。

限定詞目錄

限定詞目錄可以由一個或多個表征應用場景或設備特征的限定詞組合而成,包括移動國家碼和移動網絡碼、語言、文字、國家或地區、橫豎屏、設備類型、顏色模式和屏幕密度等維度,限定詞之間通過下劃線(_)或者中劃線(-)連接。開發者在創建限定詞目錄時,需要掌握限定詞目錄的命名要求,以及限定詞目錄與設備狀態的匹配規則。

限定詞取值要求

限定詞類型 含義與取值說明
移動國家碼和移動網絡碼 移動國家碼(MCC)和移動網絡碼(MNC)的值取自設備注冊的網絡。MCC后面可以跟隨MNC,使用下劃線()連接,也可以單獨使用。 例如: mcc460表示中國, mcc460_mnc00表示中國中國移動。 詳細取值范圍,請查閱ITU-T E.212(國際電聯相關標準)。
語言 表示設備使用的語言類型,由2~3個小寫字母組成。例如:zh表示中文,en表示英語,mai表示邁蒂利語。 詳細取值范圍,請查閱ISO 639(ISO制定的語言編碼標準)。
文字 表示設備使用的文字類型,由1個大寫字母(首字母)和3個小寫字母組成。 例如: Hans表示簡體中文, Hant表示繁體中文。 詳細取值范圍,請查閱ISO 15924(ISO制定的文字編碼標準)。
國家或地區 表示用戶所在的國家或地區,由2~3個大寫字母或者3個數字組成。例如: CN表示中國, GB表示英國。 詳細取值范圍,請查閱ISO 3166-1(ISO制定的國家和地區編碼標準)。
橫豎屏 表示設備的屏幕方向,取值如下: - 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”設備的資源匹配。

當然也可以自己創建目錄,將圖片等文件統一存放,比如,我將圖片存放在自己創建的“/common/images”目錄,這樣的話,目錄中的資源文件會被直接打包進應用,不經過編譯,也不會被賦予資源文件ID。這一點需要大家注意。

資源訪問

OpenHarmony 應用資源目錄分為三類,一類是應用資源目錄,另一類是系統資源目錄,還有就是自己創建的目錄。

它們的資源訪問方式如下:

訪問應用資源目錄

base 目錄下的資源文件會被編譯成二進制文件并且給這些資源賦予唯一的 ID ,使用相應資源的時候通過資源訪問符 $('app.type.name') 的形式,app 代表是應用內 resources 目錄中定義的資源;type 表示資源類型,可取值有 colorfloatstringstringmedia 等;name 表示資源的文件名字。例如 media 中新加 name 為 Car.svg的圖片,則訪問該字符串資源為 $r('app.media.Car')

筆者在 base 目錄下新建 string.jsoncolor.json 文件,分別存放字符串和顏色,資源內容如下圖所示:

image-20220704180833400

通過 $('app.type.name') 訪問資源的簡單樣例如下所示:

  • @Entry
    @Component
    struct Index {
    ?
    build() {
    Row() {
    Column() {
    Text($r('app.string.title_desc')) // 訪問字符串資源
    .fontSize(60).fontWeight(FontWeight.Bold)
    ?
    .fontColor($r('app.color.title_color')) // 訪問字體顏色
    .backgroundImage($r('app.media.Car')) // 設備背景圖片
    Image("common/images/Car.svg").objectFit(ImageFit.Contain).height(200)
    }
    .width('100%')
    }
    .height('100%')
    }
    }

樣例運行結果如下圖所示:

image-20220704181110662

訪問系統資源

系統資源包含 顏色圓角字體間距字符串圖片 等,通過使用系統資源,不同的開發者可以開發出具有相同視覺風格的應用,開發者可以通過 $r('sys.type.name') 的形式引用系統資源,和訪問應用資源不同的是使用 sys 代表系統資源,其它和訪問應用資源規則一致。

訪問系統資源簡單樣例如下所示:

  • @Entry
    @Component
    struct ResourceTest {
    build() {
    Column() {
    Text($r('app.string.title_desc')) //**訪問應用資源目錄**
    .fontColor($r('sys.color.ohos_fa_alert')) //**訪問系統資源目錄**
    .fontSize($r('sys.float.ohos_id_text_size_headline3'))
    .backgroundColor($r('sys.color.ohos_id_color_palette_aux1'))
    Image("/common/images/Car.svg") //**自己創建的目錄**
    .objectFit(ImageFit.None)
    .border({
    color: Color.Orange,
    radius: 20,
    width: 12
    })
    .margin({
    top: 50,
    ?
    })
    .width(200)
    .height(200)
    ?
    }
    .padding(20)
    .width("100%")
    .height("100%")
    }
    }

樣例運行結果如下圖所示:

image-20220704182124083

訪問自己創建的目錄

我們還可以將圖片文件存放在自己創建的“/common/images”目錄

使用很簡單,如下圖所示:

Image("/common/images/Car.svg") //**自己創建的目錄**

.objectFit(ImageFit.None)

.border({

color: Color.Orange,

radius: 20,

width: 12

})

.margin({

top: 50,

?

})

.width(200)

.height(200)

運行效果

image-20220704182449534

資源管理器

ArkUI開發框架在 @ohos.resourceManager 模塊里提供了資源管理器 ResourceManager,它可以訪問不同的資源,比如獲取獲取字符串資源,獲取設備配置信息等等,resourceManager 模塊提供部分 API 如下所示:

declare

namespace

resourceManager

{

// 獲取ResourceManager

export

function

getResourceManager

(

callback

: AsyncCallback

<

ResourceManager

>

): void;

// 獲取指定bundleName的ResourceManager

export

function

getResourceManager

(

bundleName

: string,

callback

: AsyncCallback

<

ResourceManager

>

): void;

?

export

interface

ResourceManager

{

// 獲取字符串資源

getString

(

resId

: number,

callback

: AsyncCallback

<

string

>

): void;

// 獲取字符串數組資源

getStringArray

(

resId

: number,

callback

: AsyncCallback

<

Array

<

string

>>

): void;

// 獲取媒體資源

getMedia

(

resId

: number,

callback

: AsyncCallback

<

Uint8Array

>

): void;

// 獲取設備信息,比如當前屏幕密度,設備類型是手機還是平板等

getDeviceCapability

(

callback

: AsyncCallback

<

DeviceCapability

>

): void;

// 獲取配置信息,比如當前屏幕方向密度,當前設備語言

getConfiguration

(

callback

: AsyncCallback

<

Configuration

>

): void;

// 釋放ResourceManager資源

release

();

}

}

export

default

resourceManager

;

使用 ResourceManager 之前先調用 getResourceManager() 方法獲取它,然后再調用 ResourceManager 的各種 getXXX() 方法獲取對應資源, ResourceManager 使用流程如下所示:

引入 resourceManager

  • import resourceManager from '@ohos.resourceManager';

獲取 ResourceManager

  • aboutToAppear() {
    resourceManager.getResourceManager((error, manager) => {
    // 獲取manager
    })
    }

使用 ResourceManager

  • manager.getString(0x1000001, (innerError, data) => {
    if(data) {
    // 獲取資源成功
    } else {
    console.log("error: " + JSON.stringify(innerError))
    }
    })

完整樣例如下所示:

import

resourceManager

from

'@ohos.resourceManager'

;

?

@

Entry

@

Component

struct

ResourceTest

{

?

@

State

text_string

:

string

=

"跟著堅果學習"

;

@

State

capability

:

string

=

"OpenHarmony"

;

@

State

configuration

:

string

=

"應用開發"

;

?

aboutToAppear

() {

resourceManager

.

getResourceManager

((

error

,

manager

)

=>

{

manager

.

getString

(

0x1000001

, (

innerError

,

data

)

=>

{

if

(

data

) {

this

.

text_string

=

data

;

}

else

{

console

.

log

(

"error: "

+

JSON

.

stringify

(

innerError

));

}

})

?

manager

.

getDeviceCapability

((

innerError

,

deviceCapability

)

=>

{

if

(

deviceCapability

) {

this

.

capability

=

JSON

.

stringify

(

deviceCapability

);

}

})

?

manager

.

getConfiguration

((

innerError

,

configuration

)

=>

{

if

(

configuration

) {

this

.

configuration

=

JSON

.

stringify

(

configuration

);

}

})

})

}

?

build

() {

Column

({ }) {

Text

(

this

.

text_string

)

// 訪問字符串資源

// 設置尺寸

.

fontSize

(

29

)

.

fontColor

(

$r

(

'app.color.title_color'

))

// 訪問字體顏色

?

?

Text

(

this

.

capability

)

// capability信息

.

fontSize

(

40

).

fontWeight

(

FontWeight

.

Bold

)

?

Text

(

this

.

configuration

)

// configuration信息

.

fontSize

(

60

)

}

.

width

(

'100%'

)

.

height

(

'100%'

)

.

padding

(

10

)

}

}

樣例運行結果如下圖所示:

IMG_0219

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • HarmonyOS
    +關注

    關注

    79

    文章

    1984

    瀏覽量

    30673
  • OpenHarmony
    +關注

    關注

    25

    文章

    3753

    瀏覽量

    16700
收藏 人收藏

    評論

    相關推薦

    OpenHarmony硬件資源池化架構介紹 OpenHarmony如何實現多設備協同

    OpenHarmony的硬件資源池化框架,為大家揭曉OpenHarmony是如何實現多設備協同的。 1. 硬件資源訪問的演進 硬件
    的頭像 發表于 05-05 09:17 ?3100次閱讀
    <b class='flag-5'>OpenHarmony</b>硬件<b class='flag-5'>資源</b>池化架構介紹 <b class='flag-5'>OpenHarmony</b>如何實現多設備協同

    鴻蒙ArkUI聲明式學習:【UI資源管理

    OpenHarmony 應用的資源分類資源訪問以及應用開發使用的像素單位以及各單位之間相互轉換的方法。
    的頭像 發表于 04-08 22:08 ?891次閱讀
    鴻蒙ArkUI聲明式學習:【UI<b class='flag-5'>資源管理</b>】

    鴻蒙開發接口資源管理:【@ohos.resourceManager (資源管理)】

    資源管理模塊,根據當前configuration(語言,區域,橫豎屏,mccmnc)和device capability(設備類型,分辨率)提供獲取應用資源信息讀取接口。
    的頭像 發表于 06-03 15:10 ?1253次閱讀
    鴻蒙開發接口<b class='flag-5'>資源管理</b>:【@ohos.resourceManager (<b class='flag-5'>資源管理</b>)】

    OpenHarmony3.1 Release版本特性解析——OpenHarmony硬件資源池化架構介紹

    訪問。1.2 一對多隨著全場景智慧生活的不斷深入,“一對一”的設備硬件資源訪問方式已不能滿足某些復雜場景的業務需求。OpenHarmony
    發表于 05-23 16:42

    OpenHarmony輕量系統中內核資源主要管理方式

    資源少,一般的數據資源都是小批量的,所以其資源管理方式都比較簡單且相似,本文重點講解在輕量系統內核中,典型的資源的存儲和訪問
    發表于 10-21 11:34

    WCDMA無線資源管理

    本課程介紹了無線資源管理的相關知識。首先通過對無線資源管理的總體介紹,讓大家對無線資源管理有了一個大體上的概念接著對無線資源管理的幾個方面:信道配置、
    發表于 06-01 16:02 ?5次下載

    WCDMA無線資源管理綜述

    無線資源管理RRM Radio Resource Management)WCDMA系統是一個自干擾的系統,無線資源管理的過程就是一個控制自己系統內的干擾的過程功率是最終的無線資源,最有效地使用無線
    發表于 06-09 14:34 ?65次下載

    網格資源管理模型研究

    文章分析了網格資源管理中的三種模型:傳統的資源管理,基于代理的資源管理和基于經濟學的資源管理。以Globus 為例討論了傳統的資源管理方法;
    發表于 08-07 14:30 ?15次下載

    基于樹形的網格資源管理研究

    資源管理是計算機網格研究的基礎內容之一。首先介紹了當前的主流網格資源管理模型,然后提出了一種新型的資源管理模型――基于樹形的網格資源管理模型。模型以代理作為基
    發表于 12-30 14:17 ?15次下載

    什么是無線資源管理,主要的技術有哪些?

    什么是無線資源管理,主要的技術有哪些? 無線資源管理(Radio Resource Management,RRM)的目標是在有限帶寬的條件下,為網絡內無線用戶終
    發表于 06-15 13:33 ?2714次閱讀

    Hadoop的YARN資源管理系統

    本質上是資源管理系統。YARN提供了資源管理資源調度等機制
    的頭像 發表于 03-15 17:00 ?2347次閱讀
    Hadoop的YARN<b class='flag-5'>資源管理</b>系統

    鴻蒙內核源碼分析:進程是內核的資源管理單元

    從系統的角度看,進程是資源管理單元。進程可以使用或等待CPU、使用內存空間等系統資源,并獨立于其它進程運行。OpenHarmony內核的進程模塊可以給用戶提供多個進程,實現了進程之間的切換和通信,幫助用戶
    發表于 11-24 17:52 ?23次下載
    鴻蒙內核源碼分析:進程是內核的<b class='flag-5'>資源管理</b>單元

    擬態通用運行環境的資源管理調度及框架

    資源管理與調度等方面論述擬態資源管理服務與調度算法的設計與實現,構造擬態運行節點軟硬件資源異構特征分類器及基于三級異構度分類的節點N元組和N
    發表于 05-12 11:20 ?6次下載

    OpenHarmony硬件資源池化模型

    在設計初期,為解決兩臺設備間的協同問題,我們通過 OpenHarmony 提供的分布式設備虛擬化能力將兩臺設備的硬件資源進行融合,實現了“一對一”的硬件資源訪問。這便是硬件
    的頭像 發表于 05-11 10:24 ?1589次閱讀

    OpenHarmony實例:【資源管理器】

    本工程使用[@ohos.app.ability.common]?接口中的AbilityContext類,獲取資源管理器resourceManager
    的頭像 發表于 04-09 15:10 ?547次閱讀
    <b class='flag-5'>OpenHarmony</b>實例:【<b class='flag-5'>資源管理</b>器】
    主站蜘蛛池模板: 国产伦子一区二区三区四区 | www.91在线| 4438全国最大成人免费高清 | 天天做天天爱天天综合网2021 | 国产深夜福利在线观看网站 | 黄 色 片免费观看 | 欧美成人性色生活片天天看 | 韩国午夜精品理论片西瓜 | 天天做天天看夜夜爽毛片 | 亚欧成人中文字幕一区 | 欧美黄色片在线播放 | 色天天躁夜夜躁天干天干 | 欧美极品另类xxx | 成人种子| 一区二区三区在线免费 | 在线高清视频大全 | 成人在线网 | 久久久久久国产精品免费 | 久久婷婷是五月综合色狠狠 | 激情综合亚洲 | 色播视频在线观看免费 | 久久久久久国产精品mv | 天天躁狠狠躁夜夜躁2021 | 扒开双腿猛进入jk校视频 | 国产综合图区 | 亚洲欧洲精品成人久久曰影片 | 国产人成午夜免视频网站 | 天天色综合社区 | 井野雏田小樱天天被调教 | 久久riav国产精品 | 在线观看黄色x视频 | 性性欧美 | 四虎成人精品在永久在线观看 | 色偷偷男人天堂 | 人人射人人 | 中国美女一级黄色片 | 欧美日韩国产一区二区三区不卡 | 国产免费小视频 | 亚洲一区二区三区免费 | 色网站免费看 | 女bbbbxxxx毛片视频0 |