ArkUI
方舟開發(fā)框架(簡稱ArkUI)是鴻蒙開發(fā)的UI框架,提供如下兩種開發(fā)范式,我們 只學(xué)聲明式開發(fā)范式
- [基于ArkTS的聲明式開發(fā)范式]
- [兼容JS的類Web開發(fā)范式]
- 開發(fā)前請熟悉鴻蒙開發(fā)指導(dǎo)文檔:[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
整體架構(gòu)圖
我們使用ArkTS寫完頁面描述后,交給語言運(yùn)行時進(jìn)行語法解析,再之后由C++編寫的后端引擎將UI轉(zhuǎn)換為渲染指令交給渲染引擎繪制到屏幕上
ArkUI語法初見
- ArkTS對TypeScript語言進(jìn)行擴(kuò)展,提供值類型結(jié)構(gòu)struct。
- struct定義自定義組件,必須搭配Component或者CustomDialog使用
- ArkUI中組件定義和狀態(tài)管理都是通過裝飾器來做的。TS中的裝飾器主要有類裝飾器、屬性裝飾器、方法裝飾器以及參數(shù)裝飾器四種
- 事件方法和屬性方法只是方法的入?yún)⒉灰粯樱粋€是基本值或者表達(dá)式值,一個是函數(shù)。
- 在TS中函數(shù)我們就把函數(shù)當(dāng)成變量來用就行,只不過普通變量是存儲一個類型的值,而函數(shù)用來存儲一個輸入到輸出的轉(zhuǎn)變過程
- 還記得我們上面說的描述UI嘛,在這里就在build函數(shù)中描述。框架會自動調(diào)用build,不需要我們手動調(diào)用
從代碼到UI顯示的整體渲染流程
ArkUI的渲染分為兩大情況
從創(chuàng)建到顯示(①~⑤)
① 通過devEco將源碼編譯成帶類型標(biāo)識的字節(jié)碼文件,同時攜帶創(chuàng)建這個結(jié)構(gòu)所需信息的指令流
② 通過跨語言調(diào)用生成C++層的Component樹。這一步只是把ArkTS描述轉(zhuǎn)變成了使用C++描述
③ 通過Component樹生成Element樹,Element是Component的實(shí)例,用于表示一個具體的組件節(jié)點(diǎn)。界面在運(yùn)行時的樹形結(jié)構(gòu)就是通過Element樹來維持的,同時自動更新的diff算法也是依賴Element樹來減少復(fù)雜度的
④ 對于每個可顯示的Element都會為其創(chuàng)建對應(yīng)的RenderNode。RenderNode負(fù)責(zé)一個節(jié)點(diǎn)的顯示信息,它形成的Render樹維護(hù)著整個界面渲染需要用到的信息,包括位置、大小、繪制命令等。后續(xù)的布局、繪制都是在Render樹上進(jìn)行的
⑤ 實(shí)現(xiàn)真正的渲染并顯示繪制結(jié)果。HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
按鈕點(diǎn)擊到更新顯示(⑥~?)
⑥ 點(diǎn)擊事件傳遞到組件,組件的onClick事件方法被觸發(fā)執(zhí)行
⑦ 由于onClick事件方法中@State注解過的變量改變了,相應(yīng)getter/setter函數(shù)會被觸發(fā)
⑧ 狀態(tài)管理模塊定位出關(guān)聯(lián)的UI組件
⑨ 狀態(tài)管理模塊更新相應(yīng)的Element樹的信息
⑩ 更新相應(yīng)的UI組件的渲染信息
? 界面顯示,與⑤類似
盒子模型
上面我們說的布局原理,子視圖上報給父視圖自身大小的值是指 組件內(nèi)容區(qū)的大小
審核編輯 黃宇
-
ui
+關(guān)注
關(guān)注
0文章
205瀏覽量
21433 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2395瀏覽量
43091
發(fā)布評論請先 登錄
相關(guān)推薦
鴻蒙ArkUI開發(fā)學(xué)習(xí):【渲染控制語法】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>開發(fā)學(xué)習(xí):【<b class='flag-5'>渲染</b>控制語法】](https://file1.elecfans.com/web2/M00/C7/95/wKgZomYU83SACphFAAFNJqQ-KrM594.jpg)
鴻蒙ArkUI-X跨平臺開發(fā):【SDK目錄結(jié)構(gòu)介紹】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>-X跨平臺開發(fā):【SDK目錄結(jié)構(gòu)介紹】](https://file1.elecfans.com/web2/M00/C5/D1/wKgZomYChGOAUaiiAADe1d8SeRY102.jpg)
【HarmonyOS HiSpark AI Camera試用連載 】鴻蒙JS UI介紹
HDC技術(shù)分論壇:HarmonyOS新一代UI框架的全面解讀
HDC技術(shù)分論壇:HarmonyOS新一代UI框架的全面解讀
HDD杭州站?ArkUI讓開發(fā)更靈活
本周四晚19:00知識賦能第八期第1課丨ArkUI框架整體設(shè)計
ArkUI,更高效的框架設(shè)計
ArkUI新能力,助力應(yīng)用開發(fā)更便捷
HarmonyOS/OpenHarmony應(yīng)用開發(fā)-ArkTS語言渲染控制概述
OpenHarmony使用ArkUI Inspector分析布局
ArkUI,更高效的框架設(shè)計
鴻蒙ArkUI-X跨平臺開發(fā):【 編寫第一個ArkUI-X應(yīng)用】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>-X跨平臺開發(fā):【 編寫第一個<b class='flag-5'>ArkUI</b>-X應(yīng)用】](https://file1.elecfans.com/web2/M00/E7/6A/wKgaomZHYpCAfHdmAABRB5pcYsA368.jpg)
鴻蒙ArkUI-X跨平臺開發(fā):【 應(yīng)用工程結(jié)構(gòu)說明】
![<b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>-X跨平臺開發(fā):【 應(yīng)用工程結(jié)構(gòu)說明】](https://file1.elecfans.com/web2/M00/C6/C5/wKgaomYCyYKAZp6HAAB4LWPdpdQ014.jpg)
評論