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)行時(shí)進(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)⒉灰粯樱粋€(gè)是基本值或者表達(dá)式值,一個(gè)是函數(shù)。
- 在TS中函數(shù)我們就把函數(shù)當(dāng)成變量來用就行,只不過普通變量是存儲(chǔ)一個(gè)類型的值,而函數(shù)用來存儲(chǔ)一個(gè)輸入到輸出的轉(zhuǎn)變過程
- 還記得我們上面說的描述UI嘛,在這里就在build函數(shù)中描述。框架會(huì)自動(dòng)調(diào)用build,不需要我們手動(dòng)調(diào)用
從代碼到UI顯示的整體渲染流程
ArkUI的渲染分為兩大情況
從創(chuàng)建到顯示(①~⑤)
① 通過devEco將源碼編譯成帶類型標(biāo)識的字節(jié)碼文件,同時(shí)攜帶創(chuàng)建這個(gè)結(jié)構(gòu)所需信息的指令流
② 通過跨語言調(diào)用生成C++層的Component樹。這一步只是把ArkTS描述轉(zhuǎn)變成了使用C++描述
③ 通過Component樹生成Element樹,Element是Component的實(shí)例,用于表示一個(gè)具體的組件節(jié)點(diǎn)。界面在運(yùn)行時(shí)的樹形結(jié)構(gòu)就是通過Element樹來維持的,同時(shí)自動(dòng)更新的diff算法也是依賴Element樹來減少復(fù)雜度的
④ 對于每個(gè)可顯示的Element都會(huì)為其創(chuàng)建對應(yīng)的RenderNode。RenderNode負(fù)責(zé)一個(gè)節(jié)點(diǎn)的顯示信息,它形成的Render樹維護(hù)著整個(gè)界面渲染需要用到的信息,包括位置、大小、繪制命令等。后續(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ù)會(huì)被觸發(fā)
⑧ 狀態(tài)管理模塊定位出關(guān)聯(lián)的UI組件
⑨ 狀態(tài)管理模塊更新相應(yīng)的Element樹的信息
⑩ 更新相應(yīng)的UI組件的渲染信息
? 界面顯示,與⑤類似
盒子模型
上面我們說的布局原理,子視圖上報(bào)給父視圖自身大小的值是指 組件內(nèi)容區(qū)的大小
審核編輯 黃宇
-
ui
+關(guān)注
關(guān)注
0文章
208瀏覽量
21791 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2618瀏覽量
44038
發(fā)布評論請先 登錄
鴻蒙ArkUI開發(fā)學(xué)習(xí):【渲染控制語法】

HarmonyOS NEXT應(yīng)用元服務(wù)布局優(yōu)化ArkUI框架執(zhí)行流程
UI開發(fā)概述
【HarmonyOS next】ArkUI-X休閑益智連連看【進(jìn)階】
【HarmonyOS HiSpark AI Camera試用連載 】鴻蒙JS UI介紹
HDC技術(shù)分論壇:HarmonyOS新一代UI框架的全面解讀
HDC技術(shù)分論壇:HarmonyOS新一代UI框架的全面解讀
HDD杭州站?ArkUI讓開發(fā)更靈活
本周四晚19:00知識賦能第八期第1課丨ArkUI框架整體設(shè)計(jì)
ArkUI,更高效的框架設(shè)計(jì)
HarmonyOS/OpenHarmony應(yīng)用開發(fā)-ArkTS語言渲染控制概述
OpenHarmony使用ArkUI Inspector分析布局
ArkUI,更高效的框架設(shè)計(jì)
鴻蒙ArkUI-X跨平臺開發(fā):【 編寫第一個(gè)ArkUI-X應(yīng)用】

評論