【HarmonyOS學習筆記】DevEco studio預設生成Hello World的程式碼理解

馬上是多久發表於2020-09-23

1 概述

  上一章通過Ability與AbilitySlice的講解大家對鴻蒙介面的基礎應該有了一定的瞭解,連結如下:


【HarmonyOS學習筆記】Ability與AbilitySlice講解


  本次通過DevEco studio預設生成的專案程式碼講解HarmonyOS UI框架的基礎知識,在此之前先了解下基礎的UI框架

2 元件與佈局

  應用的Ability在螢幕上會顯示一個使用者介面,此介面是被用來顯示所有使用者可以看到的和互動的內容。應用中所有使用者介面元素都是由ComponentComponentContainer物件組成。Component是在螢幕上繪製出一個物件,用來顯示或提供使用者互動的按鈕等,而ComponentContainer則是一個用來容納其他ComponentComponentContainer的容器。

2.1 什麼是元件與佈局?

  使用者介面元素統稱為元件,元件根據一定的層次結構進行結合形成佈局。元件在未被新增到佈局中,既無法顯示也無法互動,因此一個使用者介面至少包含一個佈局。在UI框架中,一個具體的佈局的名稱應為XXXLayout,完整的使用者介面是一個佈局,使用者介面中的一部分依然可以是一個佈局。佈局是用來容納ComponentComponentContainer的物件。

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);

相關文章