【HarmonyOS學習筆記】DevEco studio預設生成Hello World的程式碼理解
文章目錄
1 概述
上一章通過Ability與AbilitySlice的講解大家對鴻蒙介面的基礎應該有了一定的瞭解,連結如下:
【HarmonyOS學習筆記】Ability與AbilitySlice講解
本次通過DevEco studio預設生成的專案程式碼講解HarmonyOS UI框架的基礎知識,在此之前先了解下基礎的UI框架
2 元件與佈局
應用的Ability在螢幕上會顯示一個使用者介面,此介面是被用來顯示所有使用者可以看到的和互動的內容。應用中所有使用者介面元素都是由Component
與ComponentContainer
物件組成。Component
是在螢幕上繪製出一個物件,用來顯示或提供使用者互動的按鈕等,而ComponentContainer
則是一個用來容納其他Component
與ComponentContainer
的容器。
2.1 什麼是元件與佈局?
使用者介面元素統稱為元件,元件根據一定的層次結構進行結合形成佈局。元件在未被新增到佈局中,既無法顯示也無法互動,因此一個使用者介面至少包含一個佈局。在UI框架中,一個具體的佈局的名稱應為XXXLayout
,完整的使用者介面是一個佈局,使用者介面中的一部分依然可以是一個佈局。佈局是用來容納Component
和ComponentContainer
的物件。
2.2 Component
提供內容顯示,是介面中所有元件的基類,開發人員可以給Component設定事件處理回撥來建立一個可互動的元件。JAVA UI中提供了一些常用的基礎控制元件元素,例如:文字、圖片、按鈕等,元件一般繼承Component或者它的子類,如Text、Image、Button.
2.3 ComponentContainer
作為容器容納Component和ComponentContainer物件,並對他們進行佈局。JAVA UI中提供了一些標準佈局功能的容器,他們均繼承ComponentContainer,一般以Layout結尾,例如:DirectionalLayout、DependentLayout。
2.4 LayoutConfig
每種佈局都根據自身特點提供LayoutConfig供子LayoutConfig設定佈局屬性和引數,通過制定佈局屬性可以對子Component在佈局中的顯示效果進行約束。例如:“Width”、“Height”是最基本的佈局屬性,他們設定了控制元件的寬和高。
3 使用元件和佈局開發
HarmonyOS提供了 Ability 和 AbilitySlice 兩個基礎類。有介面的 Ability 繫結了系統Windows進行UI顯示,且具有生命週期。AbilitySlice 主要用於承載Ability的具體邏輯實現和介面UI,是應用顯示、執行和跳轉的最小單元。 AbilitySlice 通過setContent()為介面設定佈局。
設定介面入口,root為介面元件樹的根節點。
public void setUIContent(ComponentContainer componentContainer)
### 4 預設生成Hello World的程式碼理解 ## 4.1 入口Ability 通過上節文件可知,鴻蒙工程根據工程中config.json檔案中abilities的配置,來決定要啟動誰,如下圖: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/2020092322531812.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUwMjk4NjIx,size_16,color_FFFFFF,t_70#pic_left) 首先執行:MainAbility
4.2 MainAbility
MainAbility繼承 Ability ,並重寫了 Ability 中的onStart方法(一個 Ability 的生命週期開始就是執行的onStart方法,後續會有文件補充)。
onStart方法首先呼叫父類的onStart方法,然後呼叫setMainRoute,這個入參的意思我還沒有搞明白,有明白的大佬麻煩回答下,但是知道效果就是拉起了MainAbilitySlice。
4.3 MainAbilitySlice
從這裡可以看出一些前面所講述的知識:
DirectionalLayout 繼承 ComponentContainer ,它是一個元件容器。
Text 繼承 Component ,它是一個元件。
將元件新增到元件容器中呼叫 addComponent 方法。
myLayout.addComponent(text);
相關文章
- 【JavaScript學習筆記】hello worldJavaScript筆記
- 【C#學習筆記】Hello WorldC#筆記
- SpringMVC 學習筆記(一) Hello WorldSpringMVC筆記
- 鴻蒙 HAIWEI DevEco Studio 安裝配置,執行Hello World!鴻蒙AIdev
- HarmonyOS應用開發——Hello World
- React 學習之 Hello WorldReact
- docker學習3:Docker Hello WorldDocker
- Cangjie—倉頡程式設計-Hello,World程式設計
- visual studio 2008 開發c++學習(二)--入門hello world程式C++
- ABAP程式Hello World
- Go Web 程式設計之 Hello WorldGoWeb程式設計
- 【Go學習筆記1】go語言開發環境搭建&go實現的hello world!Go筆記開發環境
- [python]pyramid 學習1 (hello world)Python
- Andorid Studio NDK開發-Hello World
- Andorid Studio NDK 開發 - Hello World
- Andorid Studio NDK開發:Hello World
- Praat 學習日誌2--第一個指令碼程式,輸出“hello world!”指令碼
- hello world"你知多少------300種程式語言中的"hello world"程式匯
- vue@2.0原始碼學習---從hello world學習vue的內部做了什麼Vue原始碼
- docker學習1|使用docker輸出hello worldDocker
- DevEco Studio:檢視ArkUI預覽效果devUI
- 使用Android Studio建立第一個Hello World應用程式Android
- Android Studio學習筆記Android筆記
- 【學習筆記】初次學習斜率最佳化的程式碼及筆記筆記
- Hello, World
- Hello World!
- Hello World
- Django之hello world - Django入門學習教程2Django
- 漫畫:程式設計異聞錄 Hello World!程式設計
- 第一個程式Hello world
- 深入分析 Hello World 程式
- 《javascript高階程式設計》學習筆記 | 7.3.生成器JavaScript程式設計筆記
- 生成函式 學習筆記函式筆記
- shell指令碼程式設計學習筆記-運算子指令碼程式設計筆記
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- Python學習筆記—程式碼Python筆記
- 程式設計師,你知道 Hello World 的歷史麼?程式設計師
- react的”Hello World !“React