偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

2020征文-手機(jī)圖解鴻蒙Feature Ability和AbilitySlice的關(guān)系

系統(tǒng)
當(dāng)我們?cè)贒evEco Studio中創(chuàng)建一個(gè)鴻蒙項(xiàng)目時(shí),如果選擇的設(shè)備是手機(jī),并且選擇的模板是Empty Feature Ability(Java),如下圖所示,那么自動(dòng)生成的Hello World項(xiàng)目中會(huì)包含一個(gè)MainAbility和一個(gè)MainAbilitySlice。

當(dāng)我們?cè)贒evEco Studio中創(chuàng)建一個(gè)鴻蒙項(xiàng)目時(shí),如果選擇的設(shè)備是手機(jī),并且選擇的模板是Empty Feature Ability(Java),如下圖所示,那么自動(dòng)生成的Hello World項(xiàng)目中會(huì)包含一個(gè)MainAbility和一個(gè)MainAbilitySlice。接下來(lái),通過(guò)兩張圖幫大家理解MainAbility和MainAbilitySlice的關(guān)系。


打開(kāi)MainAbility,它繼承了Ability。鴻蒙手機(jī)中的任何一個(gè)頁(yè)面都可以用一個(gè)Ability來(lái)表示(確切地說(shuō),是Feature Ability)。在頁(yè)面啟動(dòng)時(shí),會(huì)自動(dòng)調(diào)用回調(diào)方法onStart(),在方法體中再調(diào)用方法setMainRoute(),從而路由到MainAbilitySlice。如下圖所示。

打開(kāi)MainAbilitySlice,它繼承了AbilitySlice。鴻蒙手機(jī)中的任何一個(gè)子頁(yè)面都可以用一個(gè)AbilitySlice來(lái)表示。在子頁(yè)面啟動(dòng)時(shí),會(huì)自動(dòng)調(diào)用回調(diào)方法onStart,在方法體中再調(diào)用方法setUIContent(),從而設(shè)置子頁(yè)面中的UI內(nèi)容。UI內(nèi)容通過(guò)布局文件ability_main.xml來(lái)指定,它位于resources/base/layout這個(gè)目錄下。如下圖所示。

因此,在主頁(yè)面MainAbility中,僅僅是設(shè)置了路由。頁(yè)面中包含哪些組件,以及每個(gè)組件長(zhǎng)什么樣,是在子頁(yè)面MainAbilitySlice中完成的。

大家來(lái)看這張圖:

MainAbility就相當(dāng)于一扇窗戶,MainAbilitySlice就相當(dāng)于一張窗貼,兩者組合在一起,就呈現(xiàn)出了一扇有窗貼的窗戶。窗貼中的畫面是印刷在窗貼上的,把畫面印刷到窗貼上,就相當(dāng)于在MainAbilitySlice中調(diào)用方法setUIContent(),從而將布局文件中的組件和樣式應(yīng)用到MainAbilitySlice中。

大家再來(lái)看這張圖:


一扇窗戶可以對(duì)應(yīng)多張窗貼,我們可以從中任意選擇一張窗貼,將其貼在窗戶上。因此,一個(gè)Ability可以對(duì)應(yīng)多個(gè)AbilitySlice,我們可以從中任意選擇一個(gè)AlibitySlice,將其應(yīng)用到Ability上。

在自動(dòng)生成的Hello World項(xiàng)目中,是先將畫面印刷到窗貼上,然后將窗貼貼到窗戶上。當(dāng)然,我們也可以不要窗貼,將畫面直接印刷到窗戶上。因此,AlibitySlice是可選的,可以在Alibity中直接調(diào)用方法setUIContent()。

打開(kāi)MainAbilitySlice,將調(diào)用setUIContent()的這行代碼剪切到MainAbility中,替換掉調(diào)用setMainRoute()的那行代碼。同時(shí),刪除目錄slice,這樣,其中的MainAbilitySlice也會(huì)被刪除。此外,在MainAbility中刪除導(dǎo)入MainAbilitySlice的那行代碼。如下圖所示。


運(yùn)行結(jié)果跟之前是完全相同的。

小結(jié):

AbilitySlice是可選的,其常見(jiàn)的使用場(chǎng)景有兩種:

(1)頁(yè)面有多種布局,需要對(duì)頁(yè)面進(jìn)行動(dòng)態(tài)布局,每種布局可以對(duì)應(yīng)一個(gè)AbilitySlice。

(2)頁(yè)面有多個(gè)Tab選項(xiàng)卡,需要在多個(gè)Tab之間切換,每個(gè)Tab可以對(duì)應(yīng)一個(gè)AbilitySlice。

源代碼請(qǐng)見(jiàn)附件。

歡迎訂閱我的專欄【圖解鴻蒙】:

https://harmonyos.51cto.com/column/27

©著作權(quán)歸作者和HarmonyOS技術(shù)社區(qū)共同所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com/#zz

 

責(zé)任編輯:jianghua 來(lái)源: 鴻蒙社區(qū)
相關(guān)推薦

2020-12-28 11:19:06

鴻蒙HarmonyOSPage Abilit

2020-12-28 10:15:18

鴻蒙HarmonyOSListContain

2020-12-22 09:48:18

鴻蒙HarmonyOS應(yīng)用程序

2020-12-23 11:24:34

鴻蒙開(kāi)發(fā)IDE安裝

2020-12-22 11:20:36

鴻蒙HarmonyOS游戲

2021-01-04 11:44:05

鴻蒙HarmonyOSAbilitySlic

2020-12-04 12:42:59

組件鴻蒙Text

2020-12-23 11:45:27

鴻蒙HarmonyOSTextField組件

2010-04-02 13:13:28

云計(jì)算

2020-12-28 11:30:07

鴻蒙HarmonyOS分布式

2020-12-15 09:33:40

鴻蒙Hi3861開(kāi)發(fā)板

2020-12-09 11:53:24

鴻蒙開(kāi)發(fā)HelloWord

2020-12-25 10:39:53

鴻蒙開(kāi)發(fā)JS

2020-12-24 11:24:31

鴻蒙開(kāi)發(fā)JS

2020-12-24 10:05:54

鴻蒙鴻蒙開(kāi)發(fā)Hello World

2021-11-09 09:43:52

鴻蒙HarmonyOS應(yīng)用

2020-12-23 11:36:23

鴻蒙HarmonyOS應(yīng)用程序開(kāi)發(fā)

2020-12-29 09:59:01

鴻蒙HarmonyOS智能家居

2020-12-16 10:05:48

鴻蒙開(kāi)發(fā)板Onenet平臺(tái)

2011-12-07 15:58:25

JavaNIO
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)