吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-13 16:06 ? 次閱讀

ArkUI

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

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

整體架構圖

image.png

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

ArkUI語法初見

image.png

  1. ArkTS對TypeScript語言進行擴展,提供值類型結構struct。
  2. struct定義自定義組件,必須搭配Component或者CustomDialog使用
  3. ArkUI中組件定義和狀態管理都是通過裝飾器來做的。TS中的裝飾器主要有類裝飾器、屬性裝飾器、方法裝飾器以及參數裝飾器四種
  4. 事件方法和屬性方法只是方法的入參不一樣,一個是基本值或者表達式值,一個是函數。
  5. 在TS中函數我們就把函數當成變量來用就行,只不過普通變量是存儲一個類型的值,而函數用來存儲一個輸入到輸出的轉變過程
  6. 還記得我們上面說的描述UI嘛,在這里就在build函數中描述。框架會自動調用build,不需要我們手動調用

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

image.png

ArkUI的渲染分為兩大情況

從創建到顯示(①~⑤)

① 通過devEco將源碼編譯成帶類型標識的字節碼文件,同時攜帶創建這個結構所需信息的指令流

② 通過跨語言調用生成C++層的Component樹。這一步只是把ArkTS描述轉變成了使用C++描述

③ 通過Component樹生成Element樹,Element是Component的實例,用于表示一個具體的組件節點。界面在運行時的樹形結構就是通過Element樹來維持的,同時自動更新的diff算法也是依賴Element樹來減少復雜度的

④ 對于每個可顯示的Element都會為其創建對應的RenderNode。RenderNode負責一個節點的顯示信息,它形成的Render樹維護著整個界面渲染需要用到的信息,包括位置、大小、繪制命令等。后續的布局、繪制都是在Render樹上進行的

⑤ 實現真正的渲染并顯示繪制結果。HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿

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

按鈕點擊到更新顯示(⑥~?)

⑥ 點擊事件傳遞到組件,組件的onClick事件方法被觸發執行

⑦ 由于onClick事件方法中@State注解過的變量改變了,相應getter/setter函數會被觸發

⑧ 狀態管理模塊定位出關聯的UI組件

⑨ 狀態管理模塊更新相應的Element樹的信息

⑩ 更新相應的UI組件的渲染信息

? 界面顯示,與⑤類似

盒子模型

image.png

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

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ui
    ui
    +關注

    關注

    0

    文章

    204

    瀏覽量

    21418
  • 鴻蒙
    +關注

    關注

    57

    文章

    2392

    瀏覽量

    43048
收藏 人收藏

    評論

    相關推薦

    鴻蒙ArkUI開發學習:【渲染控制語法】

    ArkUI開發框架是一套構建 HarmonyOS / OpenHarmony 應用界面的聲明式UI開發框架,它支持程序使用?`if/else`?條件渲染,?`ForEach`?循環渲染
    的頭像 發表于 04-09 16:40 ?1059次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>開發學習:【<b class='flag-5'>渲染</b>控制語法】

    鴻蒙ArkUI-X跨平臺開發:【SDK目錄結構介紹】

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

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

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

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

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

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

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

    HDD杭州站?ArkUI讓開發更靈活

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

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

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

    ArkUI,更高效的框架設計

    ArkUI是一套用于構建HarmonyOS應用界面的UI開發框架,本期我們將從架構設計上來聊聊ArkUI的設計理念。 ArkUI架構圖
    發表于 12-21 10:26

    ArkUI新能力,助力應用開發更便捷

    、@ObjectLink、@Builder機制支持動態化增加組件能力并融合到現有的UI中,ArkUI提供加載運行轉換后的組件樹,并負責通過框架渲染管線送顯。 結語 以上就是本期ArkUI
    發表于 02-15 11:40

    HarmonyOS/OpenHarmony應用開發-ArkTS語言渲染控制概述

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

    OpenHarmony使用ArkUI Inspector分析布局

    Inspector,打開 ArkUI Inspector。 點擊 RUN 或者 DEBUG 按鈕,把應用推包設備上,在設備應用列表選擇當前顯示在設備前端的 UI 進程。本文使用的是
    發表于 09-04 15:27

    ArkUI,更高效的框架設計

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

    鴻蒙ArkUI開發-Tabs組件的使用

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

    鴻蒙ArkUI-X跨平臺開發:【 編寫第一個ArkUI-X應用】

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

    鴻蒙ArkUI-X跨平臺開發:【 應用工程結構說明】

    本文檔配套ArkUI-X,將OpenHarmony ArkUI開發框架擴展不同的OS平臺,比如Android和iOS平臺,讓開發者基于ArkUI,可復用大部分的應用
    的頭像 發表于 05-19 21:05 ?657次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>-X跨平臺開發:【 應用工程結構說明】
    娱乐城百家乐官网技巧| 韩国百家乐的玩法技巧和规则| 宾阳县| 百家乐百胜注码法| 百家乐官网开户优惠多的平台是哪家 | 利好线上娱乐| 澳门百家乐玩法心得技巧| 百家乐官网真钱游戏下载| 永利高现金网| 百家乐官网筹码| 乐九百家乐官网游戏| 捷豹百家乐的玩法技巧和规则| 百家乐官网娱乐优惠| 澳门凯旋门赌场| 百家乐娱乐平台真钱游戏| 百家乐官网如何看| 星际博彩| 百家乐平台出租家乐平台出租| 百家乐官网分析概率原件| 大发888 大发国际| 真人百家乐免费开户送钱| 赌百家乐官网大小点桌| e利博娱乐城开户| 游戏百家乐押金| 362百家乐官网的玩法技巧和规则 大集汇百家乐官网的玩法技巧和规则 | 24山的丑方位| 百家乐官网稳赚打法| 大发888手机版下载| 钱百家乐取胜三步曲| 百家乐官网白茫茫| 尊爵| 威尼斯人娱乐789399| 真钱百家乐注册送| 棋牌百家乐官网赢钱经验技巧评测网| bet365高尔夫娱乐场| 网络百家乐打揽| 百家乐官网投注| 澳门百家乐官网才能| 皇家赌场007| 大发888网页版下载| e世博百家乐攻略|