<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

鴻蒙ArkUI開發實戰:制作一個【簡單計數器】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-08 18:05 ? 次閱讀

構建第一個頁面

  1. 使用文本組件
    工程同步完成后,在 Project 窗口,點擊 entry > src > main > ets > pages ,打開 Index.ets 文件,可以看到頁面由 Row 、 Column 、 Text 組件組成。 index.ets 文件的示例如下:

    @Entry @Component struct Index {
    
      @State message: string = 'Hello World'
    
      build() {
        Row() {
          Column() {
            Text(this.message)
              .fontSize(50)
              .fontWeight(FontWeight.Bold)
          }
          .width('100%')
        }
        .height('100%')
      }
    }
    

    @Entry 修飾符表示一個頁面的入口,它需要在 main_pages.json 配置才可以在設備上正常顯示, @Component 修飾符表示 Index 是一個組件, @State 是一個狀態標識符,當它修飾的變量值改變時ArkUI開發框架會調用 build() 方法進行頁面的刷新。

  2. 添加按鈕
    在默認頁面基礎上,我們添加一個 Button 組件,作為按鈕接受用戶點擊的動作,從而實現計數器自增操作。 " index.ets " 文件的示例如下:

    @Entry @Component struct Index {
    
      @State count: number = 0;                      // 狀態數據
    
      build() {
        Stack({alignContent: Alignment.BottomEnd}) { // 堆疊式布局
          Text(this.count.toString())                // 顯示文本
            .fontSize(50)                            // 文字大小
            .margin(50)                              // 外邊距
            .size({width: '100%', height: '100%'})   // 控件大小
    
          Button('+')                                // 顯示一個+按鈕
            .size({width: 80, height: 80})           // 按鈕大小
            .fontSize(50)                            // 按鈕文字大小
            .onClick(() = > {                         // 按鈕點擊事件
              this.count++;                          // count累加,觸發build()方法回調
            })
            .margin(50)
        }
        .width('100%')
        .height('100%')
      }
    }
    
  3. 打開預覽器
    在編輯窗口右上角的側邊工具欄,點擊 Previewer ,然后點擊頁面加號按鈕,頁面運行效果如下圖所示:
    2_1_3_1
    學習文檔參考:[docs.qq.com/doc/DUmN4VVhBd3NxdExK]

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

根據運行截圖,我們點擊了加號按鈕,觸發按鈕的 onClick 事件回調,由于在回調里執行了 count++ 操作導致了 count 的值發生了改變,又因為 count 被 @State 修飾符修飾,所以ArkUI開發框架就會重新調用 build() 方法更新各組件的屬性值, Text 組件會更新 count 的值,然后頁面刷新,計數器的功能就實現了。

頁面的構建流程

讀者可能會對上述示例的頁面刷新過程感興趣,筆者簡單介紹一下,上述示例的頁面刷新過程可以分為兩個過程,一個是頁面渲染完畢沒有點擊按鈕過程,另一個是點擊點擊按鈕后頁面數據變化過程,筆者分別介紹一下這兩個過程:

  1. 頁面初次顯示過程
    ①、index.ets 源代碼通過編譯工具鏈編譯為帶有類型標志的目標文件,同時也包含了如何創建UI結構信息的指令流。
    ②、通過跨語言調用并生成了 C++ 層面的 Component 樹(UI描述層)。
    ③、通過 Component 樹進一步生成 Element 樹。 Element 是 Component 的實例,表示一個具體的組件節點,它形成的 Element 樹負責維持界面在整個運行時的樹形結構,方便計算更新時的局部更新算法等。
    ④、對于每個可顯示的 Element 都會為其創建對應的 RenderNode 。 RenderNode 負責一個節點的顯示信息,它形成的 Render 樹維護著整個界面渲染需要用到的信息,包括位置、大小、繪制命令等。后續的布局、繪制都是在 Render 樹上進行的。
    ⑤、實現真正的渲染并顯示繪制結果。
  2. 點擊按鈕顯示過程
    ⑥、點擊屏幕,事件傳遞到組件上,組件的 onClick 事件方法被觸發執行。
    ⑦、由于 onClick 事件方法中 @State 修飾的變量值改變了,相應的 getter / setting 函數會被觸發。
    ⑧、狀態管理模塊定位出與之關聯的UI組件。
    ⑨、狀態管理模塊更新相應的 Element 樹的信息。
    ⑩、狀態管理模塊更新相應的 RenderNode 樹的渲染信息。
    ?、刷新界面并顯示繪制結果。

以上頁面整體構建流程如下圖所示:

2_1_4

小結

通過簡單計數器示例,讀者先了解一下 OpenHarmony 應用的組件、頁面布局,點擊事件以及 @State 修飾符的作用,最后給簡單介紹了一下 OpenHarmony 的頁面構建流程。

審核編輯 黃宇

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

    關注

    32

    文章

    2121

    瀏覽量

    92973
  • 鴻蒙
    +關注

    關注

    55

    文章

    1629

    瀏覽量

    42119
  • OpenHarmony
    +關注

    關注

    23

    文章

    3284

    瀏覽量

    15159
收藏 人收藏

    評論

    相關推薦

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

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

    鴻蒙ArkUI開發實戰:eTS版【笑話app】

    制作一款笑話app,使用ArkUI。
    的頭像 發表于 03-25 16:04 ?178次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b>:eTS版【笑話app】

    鴻蒙實戰項目開發:【短信服務】

    環境搭建 ? 《鴻蒙開發基礎》 ArkTS語言 安裝DevEco Studio 運用你的第一個ArkTS應用 ArkUI聲明式UI開發 .…
    發表于 03-03 21:29

    鴻蒙這么大聲勢,為何遲遲看不見崗位?最新數據來了

    基礎》 ArkTS語言 安裝DevEco Studio 運用你的第一個ArkTS應用 ArkUI聲明式UI開發 .…… 《鴻蒙開發進階》
    發表于 02-29 20:53

    計數器怎么用 計數器的作用有哪些

    計數器是一種被廣泛應用于各個領域的實用工具,在我們的日常生活中隨處可見。無論是進行時間統計,協助工作任務的完成,還是用于科學研究和編程技術,在各個領域都起到了重要的作用。本文將詳細介紹計數器
    的頭像 發表于 02-03 10:04 ?1213次閱讀

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

    以視頻功能為例,在應用開發過程中,我們需要通過ArkUI提供的Video組件為應用增加基礎的視頻播放功能。借助Video組件,我們可以實現視頻的播放功能并控制其播放狀態。常見的視頻播放場景包括觀看網絡上的較為流行的短視頻,也包括查看我們存儲在本地的視頻內容。
    的頭像 發表于 01-23 16:59 ?613次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b><b class='flag-5'>開發</b>-Video組件的使用

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

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

    鴻蒙開發-ArkUI框架實戰【日歷應用 】

    對于剛剛接觸OpenHarmony應用開發開發者,最快的入門方式就是開發簡單的應用,下面記
    發表于 01-17 21:37

    免費學習鴻蒙(HarmonyOS)開發,些地址分享

    課|應用開發視頻教程學習|HarmonyOS應用開發官網 官網是些比較基礎性的東西,學起來可能沒那么好理解。下面再推薦B站博主:Ha
    發表于 01-12 20:48

    同步計數器和異步計數器各有什么特點

    同步計數器和異步計數器是兩種常見的數據結構,它們都用于控制對共享資源的訪問。它們的主要作用是實現多個線程之間的同步和并發控制。盡管它們都被用于同步的目的,但它們有很多不同的特點和用例。 同步計數器
    的頭像 發表于 12-15 10:49 ?649次閱讀

    4017計數器的工作原理

    中,我們將詳細介紹4017計數器的工作原理。 4017計數器的內部結構非常復雜,但核心的原理相對簡單。它包含一個時鐘輸入引腳(CLK),一個復位輸入引腳(RESET),以及10個輸出引腳(Q0-Q9)。時鐘輸入引腳接收來自外部時
    的頭像 發表于 12-15 09:24 ?1221次閱讀

    計數器電路原理解析

    在學習嵌入式系統的過程中,定時器有關內容的學習是必不可少的一個環節。定時器定時功能的實現,最主要的還是靠其內部的計數器。那么,計數器是如何實現計數功能的呢?接下來就來簡單介紹一下
    的頭像 發表于 09-25 14:18 ?1529次閱讀
    <b class='flag-5'>計數器</b>電路原理解析

    使用Arduino制作簡單的頻率計數器

    電子發燒友網站提供《使用Arduino制作簡單的頻率計數器.zip》資料免費下載
    發表于 07-12 10:40 ?4次下載
    使用Arduino<b class='flag-5'>制作</b><b class='flag-5'>簡單</b>的頻率<b class='flag-5'>計數器</b>

    計數器在程序中有什么作用

    PLC程序除了梯形圖之外,還有FBD功能塊作為指令,這種指令一般都有背景DB。   PLC計數器指令可使其對內部程序事件和外部過程事件進行計數。這樣就可以節約外部計數器的使用。   每個
    的頭像 發表于 07-04 15:57 ?1004次閱讀
    <b class='flag-5'>計數器</b>在程序中有什么作用

    可定制的蓋革穆勒計數器制作

    電子發燒友網站提供《可定制的蓋革穆勒計數器制作.zip》資料免費下載
    發表于 06-12 10:51 ?2次下載
    可定制的蓋革穆勒<b class='flag-5'>計數器</b><b class='flag-5'>制作</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>