一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

鴻蒙ArkUI:【從代碼到UI顯示的整體渲染流程】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-13 16:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

ArkUI

方舟開發(fā)框架(簡稱ArkUI)是鴻蒙開發(fā)的UI框架,提供如下兩種開發(fā)范式,我們 只學(xué)聲明式開發(fā)范式

  1. [基于ArkTS的聲明式開發(fā)范式]
  2. [兼容JS的類Web開發(fā)范式]
  3. 開發(fā)前請(qǐng)熟悉鴻蒙開發(fā)指導(dǎo)文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

整體架構(gòu)圖

image.png

我們使用ArkTS寫完頁面描述后,交給語言運(yùn)行時(shí)進(jìn)行語法解析,再之后由C++編寫的后端引擎將UI轉(zhuǎn)換為渲染指令交給渲染引擎繪制到屏幕上

ArkUI語法初見

image.png

  1. ArkTS對(duì)TypeScript語言進(jìn)行擴(kuò)展,提供值類型結(jié)構(gòu)struct。
  2. struct定義自定義組件,必須搭配Component或者CustomDialog使用
  3. ArkUI中組件定義和狀態(tài)管理都是通過裝飾器來做的。TS中的裝飾器主要有類裝飾器、屬性裝飾器、方法裝飾器以及參數(shù)裝飾器四種
  4. 事件方法和屬性方法只是方法的入?yún)⒉灰粯?,一個(gè)是基本值或者表達(dá)式值,一個(gè)是函數(shù)。
  5. 在TS中函數(shù)我們就把函數(shù)當(dāng)成變量來用就行,只不過普通變量是存儲(chǔ)一個(gè)類型的值,而函數(shù)用來存儲(chǔ)一個(gè)輸入到輸出的轉(zhuǎn)變過程
  6. 還記得我們上面說的描述UI嘛,在這里就在build函數(shù)中描述??蚣軙?huì)自動(dòng)調(diào)用build,不需要我們手動(dòng)調(diào)用

從代碼到UI顯示的整體渲染流程

image.png

ArkUI的渲染分為兩大情況

從創(chuàng)建到顯示(①~⑤)

① 通過devEco將源碼編譯成帶類型標(biāo)識(shí)的字節(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ù)雜度的

④ 對(duì)于每個(gè)可顯示的Element都會(huì)為其創(chuàng)建對(duì)應(yīng)的RenderNode。RenderNode負(fù)責(zé)一個(gè)節(jié)點(diǎn)的顯示信息,它形成的Render樹維護(hù)著整個(gè)界面渲染需要用到的信息,包括位置、大小、繪制命令等。后續(xù)的布局、繪制都是在Render樹上進(jìn)行的

⑤ 實(shí)現(xiàn)真正的渲染并顯示繪制結(jié)果。HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿

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

按鈕點(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組件的渲染信息

? 界面顯示,與⑤類似

盒子模型

image.png

上面我們說的布局原理,子視圖上報(bào)給父視圖自身大小的值是指 組件內(nèi)容區(qū)的大小

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    208

    瀏覽量

    21791
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2618

    瀏覽量

    44038
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    鴻蒙ArkUI開發(fā)學(xué)習(xí):【渲染控制語法】

    ArkUI開發(fā)框架是一套構(gòu)建 HarmonyOS / OpenHarmony 應(yīng)用界面的聲明式UI開發(fā)框架,它支持程序使用?`if/else`?條件渲染,?`ForEach`?循環(huán)渲染
    的頭像 發(fā)表于 04-09 16:40 ?1427次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>開發(fā)學(xué)習(xí):【<b class='flag-5'>渲染</b>控制語法】

    HarmonyOS NEXT應(yīng)用元服務(wù)布局優(yōu)化ArkUI框架執(zhí)行流程

    ,所有的組件都會(huì)參與界面的渲染中(換句說法,初次渲染的時(shí)候,可以認(rèn)為所有的組件都需要更新)。 二、 UI更新過程 UI更新過程包含組件標(biāo)臟
    發(fā)表于 06-23 09:41

    UI開發(fā)概述

    不同的裝飾器給開發(fā)者提供了清晰的頁面更新渲染流程和管道。狀態(tài)管理包括UI組件狀態(tài)和應(yīng)用程序狀態(tài),兩者協(xié)作可以使開發(fā)者完整地構(gòu)建整個(gè)應(yīng)用的數(shù)據(jù)更新和UI
    發(fā)表于 06-24 06:36

    【HarmonyOS next】ArkUI-X休閑益智連連看【進(jìn)階】

    一套代碼雙端運(yùn)行的跨平臺(tái)實(shí)踐 在移動(dòng)應(yīng)用開發(fā)中,跨平臺(tái)技術(shù)始終是開發(fā)者追求的圣杯。借助ArkUI-X框架,我們僅用一套ArkTS代碼即可實(shí)現(xiàn)應(yīng)用在HarmonyOS和iOS雙端的原生級(jí)運(yùn)行。本文以
    發(fā)表于 06-28 21:51

    【HarmonyOS HiSpark AI Camera試用連載 】鴻蒙JS UI介紹

    設(shè)備顯示能力,運(yùn)行時(shí)自動(dòng)映射到不同設(shè)備類型,開發(fā)者無感知,降低開發(fā)者多設(shè)備適配成本。高性能開發(fā)框架包含了許多核心的控件,如列表、圖片和各類容器組件等,針對(duì)聲明式語法進(jìn)行了渲染流程的優(yōu)化。整體
    發(fā)表于 01-11 20:10

    HDC技術(shù)分論壇:HarmonyOS新一代UI框架的全面解讀

    UI開發(fā)。通過eDSL,結(jié)合語法糖或者語言原生的元編程能力,設(shè)計(jì)了統(tǒng)一的UI開發(fā)范式,并能夠結(jié)合不同語言來實(shí)現(xiàn)應(yīng)用的邏輯處理部分。2. 關(guān)鍵渲染性能下面通過一個(gè)簡單的示例代碼,為大家講
    發(fā)表于 10-26 18:48

    HDC技術(shù)分論壇:HarmonyOS新一代UI框架的全面解讀

    。通過eDSL,結(jié)合語法糖或者語言原生的元編程能力,設(shè)計(jì)了統(tǒng)一的UI開發(fā)范式,并能夠結(jié)合不同語言來實(shí)現(xiàn)應(yīng)用的邏輯處理部分。2. 關(guān)鍵渲染性能下面通過一個(gè)簡單的示例代碼,為大家講述
    發(fā)表于 11-22 16:51

    HDD杭州站?ArkUI讓開發(fā)更靈活

    ArkUI的能力,給開發(fā)者帶來了以下新的預(yù)覽體驗(yàn):● 亞秒級(jí)別實(shí)時(shí)預(yù)覽通過檢測(cè)最小更新代碼,進(jìn)行局部渲染更新,達(dá)到亞秒級(jí)的實(shí)時(shí)預(yù)覽能力。● UI界面與
    發(fā)表于 08-05 11:33

    本周四晚19:00知識(shí)賦能第八期第1課丨ArkUI框架整體設(shè)計(jì)

    UI繪制和渲染,只需聚焦應(yīng)用開發(fā),從而實(shí)現(xiàn)極簡高效地開發(fā)。9月15日(本周四)晚上19:00,第8期第1節(jié)直播,巴延興老師在直播間與大家分享《ArkUI框架整體設(shè)計(jì)》——本次分享將介紹
    發(fā)表于 09-14 15:35

    ArkUI,更高效的框架設(shè)計(jì)

    ArkUI是一套用于構(gòu)建HarmonyOS應(yīng)用界面的UI開發(fā)框架,本期我們將從架構(gòu)設(shè)計(jì)上來聊聊ArkUI的設(shè)計(jì)理念。 ArkUI架構(gòu)圖
    發(fā)表于 12-21 10:26

    HarmonyOS/OpenHarmony應(yīng)用開發(fā)-ArkTS語言渲染控制概述

    ArkUI通過自定義組件的build()函數(shù)和@builder裝飾器中的聲明式UI描述語句構(gòu)建相應(yīng)的UI。 在聲明式描述語句中開發(fā)者除了使用系統(tǒng)組件外,還可以使用渲染控制語句來輔助
    發(fā)表于 08-09 09:54

    OpenHarmony使用ArkUI Inspector分析布局

    Inspector,打開 ArkUI Inspector。 點(diǎn)擊 RUN 或者 DEBUG 按鈕,把應(yīng)用推包設(shè)備上,在設(shè)備應(yīng)用列表選擇當(dāng)前顯示在設(shè)備前端的 UI 進(jìn)程。本文使用的是
    發(fā)表于 09-04 15:27

    ArkUI,更高效的框架設(shè)計(jì)

    上期文章我們講到了ArkUI的三大特性,同時(shí)提到了ArkUI是一套用于構(gòu)建HarmonyOS應(yīng)用界面的UI開發(fā)框架,本期我們將從架構(gòu)設(shè)計(jì)上來聊聊ArkUI的設(shè)計(jì)理念。
    的頭像 發(fā)表于 12-21 09:15 ?1986次閱讀

    鴻蒙ArkUI開發(fā)-Tabs組件的使用

    鴻蒙ArkUI開發(fā)-Tabs組件的使用
    的頭像 發(fā)表于 01-19 16:01 ?2742次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>開發(fā)-Tabs組件的使用

    鴻蒙ArkUI-X跨平臺(tái)開發(fā):【 編寫第一個(gè)ArkUI-X應(yīng)用】

    通過構(gòu)建一個(gè)簡單的ArkUI頁面跳轉(zhuǎn)示例,快速了解資源創(chuàng)建引用,路由代碼編寫和UI布局編寫等應(yīng)用開發(fā)流程。
    的頭像 發(fā)表于 05-21 17:36 ?1264次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>-X跨平臺(tái)開發(fā):【 編寫第一個(gè)<b class='flag-5'>ArkUI</b>-X應(yīng)用】