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

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

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

OpenHarmony基礎(chǔ)

ArkUI詳解 ? 來源:ArkUI詳解 ? 作者:ArkUI詳解 ? 2022-12-07 08:43 ? 次閱讀

OpenHarmony介紹

OpenHarmony 是由開放原子開源基金會孵化及運營的開源項目,目標是面向全場景、全連接、全智能時代,基于開源的方式,搭建一個智能終端設(shè)備操作系統(tǒng)的框架和平臺,促進萬物互聯(lián)產(chǎn)業(yè)的繁榮發(fā)展。

OpenHarmony架構(gòu)與安全

img

OpenHarmony整體架構(gòu)遵從分層設(shè)計,從下往上依次為:內(nèi)核層,系統(tǒng)服務(wù)層,框架層和應(yīng)用層。

系統(tǒng)功能按照“系統(tǒng)>子系統(tǒng)>功能/模塊”逐級展開,在多設(shè)備部署

OpenHarmony 系統(tǒng)類型

image-20220907204347040

輕量系統(tǒng)(mini system)

面向MCU處理器例如Arm Cortex-M、RISC-V 32位的設(shè)備,硬件資源極其有限,支持的設(shè)備最小內(nèi)存為128KiB,可以提供多種輕量級網(wǎng)絡(luò)協(xié)議,輕量級的圖形框架,以及豐富的IOT總線讀寫部件等??芍蔚?a target="_blank">產(chǎn)品智能家居領(lǐng)域的連接類模組、傳感器設(shè)備、穿戴類設(shè)備等。

小型系統(tǒng)(small system)

面向應(yīng)用處理器例如Arm Cortex-A的設(shè)備,支持的設(shè)備最小內(nèi)存為1MiB,可以提供更高的安全能力、標準的圖形框架、視頻編解碼的多媒體能力??芍蔚漠a(chǎn)品如智能家居領(lǐng)域的IP Camera、電子貓眼、路由器以及智慧出行域的行車記錄儀等。

標準系統(tǒng)(standard system)

面向應(yīng)用處理器例如Arm Cortex-A的設(shè)備,支持的設(shè)備最小內(nèi)存為128MiB,可以提供增強的交互能力、3D GPU以及硬件合成能力、更多控件以及動效更豐富的圖形能力、完整的應(yīng)用框架??芍蔚漠a(chǎn)品如高端的冰箱顯示屏。

ArkUI

方舟開發(fā)框架(簡稱:ArkUI)是一套構(gòu)建分布式應(yīng)用界面的聲明式UI開發(fā)框架。它使用極簡的UI信息語法、豐富的UI組件、以及實時界面預(yù)覽工具,幫助大家在OpenHarmony應(yīng)用開發(fā)中提升開發(fā)效率30%。您只需使用一套ArkTS API,就能在多個OpenHarmony設(shè)備上提供生動而流暢的用戶界面體驗。

極簡的UI信息語法

ArkUI開發(fā)框架采用基于 TypeScript 擴展的極簡的聲明式UI描述界面語法,提供了類自然語言的UI描述和組合,開發(fā)者只需用幾行簡單直觀的聲明式代碼,即可完成界面功能。

豐富的內(nèi)置UI組件

ArkUI開發(fā)框架內(nèi)置了豐富而精美的多態(tài)組件,可滿足大部分應(yīng)用界面開發(fā)的需求,開發(fā)者可以輕松地向幾乎任何UI控件添加動畫并選擇一系列框架內(nèi)置的動畫能力,可為用戶帶來平滑而自然的體驗。其中多態(tài)是指UI描述是統(tǒng)一的,UI呈現(xiàn)在不同類型設(shè)備上會有所不同。比如 Button 組件在手機和手表會有不同的樣式和交互方式。

多維度的狀態(tài)管理機制

ArkUI開發(fā)框架為開發(fā)者提供了跨設(shè)備數(shù)據(jù)綁定功能和多維度的狀態(tài)管理機制(組件內(nèi)/組件間/全局/分布式數(shù)據(jù)驅(qū)動UI變更),支持靈活的數(shù)據(jù)驅(qū)動的UI變更,幫助開發(fā)者節(jié)省70%代碼完成跨端界面應(yīng)用開發(fā)。

支持多設(shè)備開發(fā)

ArkUI開發(fā)框架除了提供UI開發(fā)套件外還圍繞著多設(shè)備開發(fā)提供了多維度的解決方案,進一步簡化開發(fā):

基礎(chǔ)開發(fā)能力:包括基礎(chǔ)的分層參數(shù)配置(比如色彩、字號、圓角、間距等),柵格系統(tǒng),原子化布局能力(比如拉伸、折行、隱藏等)。

零部件組件層:包括多態(tài)控件,統(tǒng)一交互能力,以及在此基礎(chǔ)上的組件組合。

面向典型場景:提供分類的頁面組合模板以及示例代碼。

原生性能體驗

ArkUI開發(fā)框架內(nèi)置了許多核心的UI控件和動效,如圖片、列表、網(wǎng)格、屬性動畫、轉(zhuǎn)場動畫等,加持自研的 ArkCompiler 方舟編譯器和 ArkRuntime 方舟運行時深度優(yōu)化,這些都可以在 HarmonyOS / OpenHarmony 設(shè)備上達到移動原生應(yīng)用一樣的性能體驗。

實時預(yù)覽機制

ArkUI開發(fā)框架支持實時界面預(yù)覽特性可幫助開發(fā)快速的所見即所得的開發(fā)和調(diào)測界面,無需連接真機設(shè)備就可以顯示應(yīng)用界面在任何 HarmonyOS / OpenHarmony 設(shè)備上的UI效果,預(yù)覽的關(guān)鍵特性主要包括:

一致性渲染:和目標設(shè)備一致的UI呈現(xiàn)效果。

實時性預(yù)覽:改動相應(yīng)的代碼,實時呈現(xiàn)出相應(yīng)UI效果。另外,代碼能夠和UI雙向聯(lián)動,代碼改動的同時UI也實時變更,UI改動的同時代碼也相應(yīng)地變更。

多維度預(yù)覽:支持頁面級預(yù)覽、組件級預(yù)覽、多設(shè)備預(yù)覽。

高級UI組件擴展能力

ArkUI框架提供了基于XComponent組件的C++自繪制引擎接入(比如游戲引擎)能力,和基于Web組件的HTML5/Web的渲染能力。滿足了開發(fā)者在游戲、相機、地圖、瀏覽器等復(fù)雜應(yīng)用場景的開發(fā)訴求,降低了這類應(yīng)用移植的門檻。

Stage 模型

面向開發(fā)者提供十幾種不同場景的擴展服務(wù)Extension機制,在保證了應(yīng)用后臺進程合理運行的基礎(chǔ)上,規(guī)避了應(yīng)用進程之間無序拉起,達到保證前臺資源供給,應(yīng)用調(diào)度更加有序的目的。

ArkTS

之前寫一個應(yīng)用需要了解三種語言(JS/TS、HTML和CSS)。這對Web開發(fā)者相對友好,但對非Web開發(fā)者來說,負擔(dān)較重。

ArkTS是OpenHarmony優(yōu)選的主力應(yīng)用開發(fā)語言。ArkTS基于TypeScript(簡稱TS)語言擴展而來,是TS的超集。

ArkTS繼承了TS的所有特性。

當前,ArkTS在TS的基礎(chǔ)上主要擴展了聲明式UI能力,讓開發(fā)者能夠以更簡潔、更自然的方式開發(fā)高性能應(yīng)用。當前擴展的聲明式UI能力包括如下特性。

基本UI描述:ArkTS定義了各種裝飾器、自定義組件、UI描述機制,再配合UI開發(fā)框架中的內(nèi)置組件及其相關(guān)的事件方法、屬性方法等共同構(gòu)成了UI開發(fā)的主體。

狀態(tài)管理:ArkTS提供了多維度的狀態(tài)管理機制,在UI開發(fā)框架中,和UI相關(guān)聯(lián)的數(shù)據(jù),不僅可以在組件內(nèi)使用,還可以在不同組件層級間傳遞,比如父子組件之間、爺孫組件之間,也可以是應(yīng)用全局范圍內(nèi)的傳遞,還可以是跨設(shè)備傳遞。另外,從數(shù)據(jù)的傳遞形式來看,可分為只讀的單向傳遞和可變更的雙向傳遞。開發(fā)者可以靈活的利用這些能力來實現(xiàn)數(shù)據(jù)和UI的聯(lián)動。

動態(tài)構(gòu)建UI元素:ArkTS提供了動態(tài)構(gòu)建UI元素的能力,不僅可以自定義組件內(nèi)部的UI結(jié)構(gòu),還可以復(fù)用組件樣式,擴展原生組件。

渲染控制:ArkTS提供了渲染控制的能力。條件渲染可根據(jù)應(yīng)用的不同狀態(tài),渲染對應(yīng)狀態(tài)下的UI內(nèi)容。循環(huán)渲染可從數(shù)據(jù)源中迭代獲取數(shù)據(jù),并在每次迭代過程中創(chuàng)建相應(yīng)的組件。

使用限制與擴展:ArkTS在使用過程中存在限制與約束,同時也擴展了雙向綁定等能力。

image-20221205113519597

示例中所包含的ArkTS聲明式開發(fā)范式的基本組成說明如下:

裝飾器: 用于裝飾類、結(jié)構(gòu)、方法以及變量,賦予其特殊的含義,如上述示例中@Entry、@Component和@State都是裝飾器。 具體而言,@Component表示這是個自定義組件;@Entry則表示這是個入口組件;@State表示這是組件中的狀態(tài)變量,這個變量變化會觸發(fā)UI刷新。

自定義組件:可復(fù)用的UI單元,可組合其他組件,如上述被@Component裝飾的struct Hello。

UI描述:聲明式的方法來描述UI的結(jié)構(gòu),例如build()方法中的代碼塊。

內(nèi)置組件:ArkTS中默認內(nèi)置的基礎(chǔ)組件、容器組件、媒體組件、繪制組件、畫布組件等各種組件,開發(fā)者可以直接調(diào)用,如示例中的Column、Text、Divider、Button等。

屬性方法:用于組件屬性的配置,如fontSize()、width()、height()、color()等,可通過鏈式調(diào)用的方式設(shè)置多項屬性。

事件方法:用于添加組件對事件的響應(yīng)邏輯,如跟隨在Button后面的onClick(),同樣可以通過鏈式調(diào)用的方式設(shè)置多個事件響應(yīng)邏輯。

審核編輯:湯梓紅

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

    關(guān)注

    3

    文章

    3380

    瀏覽量

    42603
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3731

    瀏覽量

    16431
收藏 人收藏

    評論

    相關(guān)推薦

    OpenHarmony程序分析框架論文入選ICSE 2025

      近日,ICSE 2025軟件工程實踐Track放榜,面向OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)的ArkTS程序分析基礎(chǔ)框架--方舟程序分析器(論文題目為
    的頭像 發(fā)表于 01-02 13:41 ?155次閱讀
    <b class='flag-5'>OpenHarmony</b>程序分析框架論文入選ICSE 2025

    OpenHarmony首次亮相歐洲開源會議

    。OpenHarmony項目群技術(shù)指導(dǎo)委員會(TSC)主席陳海波受邀參加大會主論壇分享,由OpenHarmony 與Eclipse Oniro聯(lián)合籌劃的“Think Global, Code Local”分論壇
    的頭像 發(fā)表于 10-26 11:48 ?534次閱讀
    <b class='flag-5'>OpenHarmony</b>首次亮相歐洲開源會議

    第三屆OpenHarmony技術(shù)大會星光璀璨、致謝OpenHarmony社區(qū)貢獻者

    10月12日,在上海舉辦的第三屆OpenHarmony技術(shù)大會上,32家高校OpenHarmony技術(shù)俱樂部璀璨亮相,30家高校OpenHarmony開發(fā)者協(xié)會盛大啟幕。還分別致謝了年度星光TSG
    的頭像 發(fā)表于 10-21 14:10 ?237次閱讀

    第三屆OpenHarmony技術(shù)大會 “OpenHarmony開發(fā)者激勵計劃”授牌儀式圓滿舉行

    10月12日,以“技術(shù)引領(lǐng)筑生態(tài),萬物智聯(lián)創(chuàng)未來”為主題的第三屆OpenHarmony技術(shù)大會隆重舉行,“OpenHarmony開發(fā)者激勵計劃”授牌儀式在大會期間同步進行。該計劃旨在增加
    的頭像 發(fā)表于 10-21 11:48 ?294次閱讀
    第三屆<b class='flag-5'>OpenHarmony</b>技術(shù)大會 “<b class='flag-5'>OpenHarmony</b>開發(fā)者激勵計劃”授牌儀式圓滿舉行

    OpenHarmony年度技術(shù)俱樂部、個人及活動評選結(jié)果公示

    2024年度技術(shù)俱樂部評選活動已經(jīng)圓滿結(jié)束。在此,OpenHarmony項目群技術(shù)指導(dǎo)委員會(TSC)對所有參與者的積極參與和辛勤付出表示感謝。經(jīng)過嚴格的評選和審核,現(xiàn)將名單予以公示: 評選
    的頭像 發(fā)表于 10-05 08:07 ?279次閱讀

    基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):HelloOpenharmony

    1、程序簡介該程序是基于OpenHarmony標準系統(tǒng)編寫的UI應(yīng)用類:HelloOpenHarmony。本案例是基于API9接口開發(fā)。本案例已在OpenHarmony凌蒙派-RK3568開發(fā)
    的頭像 發(fā)表于 09-15 08:09 ?442次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應(yīng)用開發(fā):Hello<b class='flag-5'>Openharmony</b>

    基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):HelloOpenharmony

    1、程序簡介 該程序是基于OpenHarmony標準系統(tǒng)編寫的UI應(yīng)用類:HelloOpenHarmony。 本案例是基于API 9接口開發(fā)。 本案例已在OpenHarmony凌蒙派-RK3568
    發(fā)表于 09-14 12:47

    河南大學(xué)OpenHarmony技術(shù)俱樂部正式揭牌成立

    8月30日,由OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)項目群技術(shù)指導(dǎo)委員會與河南大學(xué)共同舉辦的“河南大學(xué)OpenHarmony技術(shù)俱樂部成立大會”在鄭州校區(qū)友蘭
    的頭像 發(fā)表于 09-03 16:12 ?440次閱讀
    河南大學(xué)<b class='flag-5'>OpenHarmony</b>技術(shù)俱樂部正式揭牌成立

    openharmony移植AT32F407編譯時錯誤

    openharmony上移植AT32F407,hb build后出現(xiàn)鏈接錯誤 [OHOS ERROR] /home/sven/openharmony/env_setup
    發(fā)表于 08-18 17:04

    OpenHarmony之開機優(yōu)化

    一丶環(huán)境信息 源碼版本:OpenHarmony-4.1-Release 板子型號:dayu200(RK3568) 二丶Bootchart工具 在開機優(yōu)化時,我們需要借助Bootchart工具,當前
    發(fā)表于 07-01 16:39

    鴻蒙OpenHarmony【創(chuàng)建工程并獲取源碼】

    在通過DevEco Device Tool創(chuàng)建OpenHarmony工程時,可自動下載相應(yīng)版本的OpenHarmony源碼。
    的頭像 發(fā)表于 04-19 21:40 ?397次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>【創(chuàng)建工程并獲取源碼】

    OpenHarmony南向能力征集令

    1、適配過程中缺少哪些接口能力或者南向能力,需要OpenHarmony去補齊的?例如內(nèi)核、編譯、器件適配、單板適配等; 2、對標linux,需要OpenHarmony提供哪些能力?比如V4L2
    發(fā)表于 04-09 15:32

    OpenAtom OpenHarmony 4.1 Release版本正式發(fā)布

    近日,OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)4.1 Release版本如期而至,開發(fā)套件同步升級到API 11 Release。
    的頭像 發(fā)表于 04-07 11:43 ?718次閱讀

    OpenHarmony內(nèi)核編程實戰(zhàn)

    編程入門[Hello,OpenHarmony]在正式開始之前,對于剛接觸OpenHarmony的伙伴們,面對大篇幅的源碼可能無從下手,不知道怎么去編碼寫程序,下面用一個簡單的例子帶伙伴們?nèi)腴T。▍任務(wù)
    的頭像 發(fā)表于 03-27 08:31 ?883次閱讀
    <b class='flag-5'>OpenHarmony</b>內(nèi)核編程實戰(zhàn)

    淺談兼容 OpenHarmony 的 Flutter

    OpenHarmony SIG 組織在 Gitee 開源了兼容 OpenHarmony 的 Flutter。該組織主要用于孵化 OpenHarmony 相關(guān)的開源生態(tài)項目。 ? ? ▲ 倉庫地址
    的頭像 發(fā)表于 02-02 15:22 ?640次閱讀
    淺談兼容 <b class='flag-5'>OpenHarmony</b> 的 Flutter