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

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

完善資料讓更多小伙伴認(rèn)識你,還能領(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ā)前請熟悉鴻蒙開發(fā)指導(dǎo)文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

整體架構(gòu)圖

image.png

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

ArkUI語法初見

image.png

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

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

image.png

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é)果。HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿

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

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

? 界面顯示,與⑤類似

盒子模型

image.png

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

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    205

    瀏覽量

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

    關(guān)注

    57

    文章

    2395

    瀏覽量

    43091
收藏 人收藏

    評論

    相關(guā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 ?1069次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>開發(fā)學(xué)習(xí):【<b class='flag-5'>渲染</b>控制語法】

    鴻蒙ArkUI-X跨平臺開發(fā):【SDK目錄結(jié)構(gòu)介紹】

    本文檔配套ArkUI-X,將OpenHarmony ArkUI開發(fā)框架擴(kuò)展不同的OS平臺,比如Android和iOS平臺,讓開發(fā)者基于ArkUI,可復(fù)用大部分的應(yīng)用
    的頭像 發(fā)表于 05-20 16:28 ?889次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>-X跨平臺開發(fā):【SDK目錄結(jié)構(gòu)介紹】

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

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

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

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

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

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

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

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

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

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

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

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

    ArkUI新能力,助力應(yīng)用開發(fā)更便捷

    、@ObjectLink、@Builder機(jī)制支持動態(tài)化增加組件能力并融合到現(xiàn)有的UI中,ArkUI提供加載運(yùn)行轉(zhuǎn)換后的組件樹,并負(fù)責(zé)通過框架渲染管線送顯。 結(jié)語 以上就是本期ArkUI
    發(fā)表于 02-15 11:40

    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è)計

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

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

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

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

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

    鴻蒙ArkUI-X跨平臺開發(fā):【 應(yīng)用工程結(jié)構(gòu)說明】

    本文檔配套ArkUI-X,將OpenHarmony ArkUI開發(fā)框架擴(kuò)展不同的OS平臺,比如Android和iOS平臺,讓開發(fā)者基于ArkUI,可復(fù)用大部分的應(yīng)用
    的頭像 發(fā)表于 05-19 21:05 ?667次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>-X跨平臺開發(fā):【 應(yīng)用工程結(jié)構(gòu)說明】
    主站蜘蛛池模板: 亚洲欧美在线一区二区 | xxxx日| 欧美一级片网站 | 国产色啪午夜免费视频 | 久久精品韩国三级 | 日本一级大片 | 四虎国产精品免费视 | 99 久久99久久精品免观看 | 色偷偷女男人的天堂亚洲网 | 一级毛片q片 | 久久精品国产精品亚洲精品 | 人阁色第四影院在线观看 | 免费的毛片 | 亚洲午夜精品久久久久久人妖 | 日日干日日爽 | 亚洲欧美日韩在线观看你懂的 | 久久久精品2021免费观看 | 国产三级播放 | 天天干夜夜做 | 色综合久久网女同蕾丝边 | 免费午夜网站 | 97爱sese| 两性色午夜视频自由成熟的性 | ts人妖国产一区 | 在线免费色| 成人欧美一区二区三区视频不卡 | 精品午夜久久福利大片免费 | 乱人伦一区二区三区 | 一区二区三区高清在线 | 欧美色欧美亚洲高清在线视频 | 国产欧美精品一区二区色综合 | 老司机色网 | 亚洲一区二区色 | 亚洲午夜小视频 | 性视频网址 | 午夜老司机永久免费看片 | 中文字幕天天躁夜夜狠狠综合 | 男女一进一出无遮挡黄 | 久久综合五月婷婷 | 精品伊人久久香线蕉 | 久久97精品久久久久久久看片 |