成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【鴻蒙基地】鴻蒙從窗口開始:Page Ability誕生記

系統
Page Ability是FA唯一支持的Ability,本質上是一個窗口,類似于Android的Activity,用于提供與用戶交互的能力。為了方便,在后面的內容就將Page Ability簡稱為Page。
[[375001]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

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

1. Page Ability概述

Page Ability是FA唯一支持的Ability,本質上是一個窗口,類似于Android的Activity,用于提供與用戶交互的能力。為了方便,在后面的內容就將Page Ability簡稱為Page。另外,HarmonyOS還提供了一個AbilitySlice。AbilitySlice的功能與Page類似,只是在切換時可以在同一個Page內完成。如果從Page到Page,相當于Web頁面用新窗口導航到另一個頁面。如果從AbilitySlice切換到AbilitySlice,相當于Web頁面以同一個窗口的方式導航到另一個頁面。

一個Page可以不使用AbilitySlice,也可以使用一個或多個AbilitySlice,在創建HarmonyOS工程時,生成的Demo代碼中包含了一個默認的AbilitySlice(MainAbilitySlice.java)。圖1 是Page和AbilitySlice的關系。

圖1 Page與AbilitySlice的關系

如果在Page中使用多個AbilitySlice,那么這些AbilitySlice提供的業務能力應高度相關。下面是一個典型的應用場景:

在線視頻播放器的主界面可以用一個Page來實現,在主界面中包含了兩個AbilitySlice:一個AbilitySlice用于展示視頻列表,另一個AbilitySlice用于播放視頻。

在DevEco Studio中創建HarmonyOS工程時,IDE會提供一些Page模板,如圖2所示。通過這些Page模板,可以生成HarmonyOS工程的骨架代碼,其中會包含一些簡單的例子,相當于HelloWorld。

圖2 創建HarmonyOS工程時的提供的Page模板

DevEco Studio提供了自動創建Page Ability的功能,在創建的過程中會自動向config.json文件中添加相應的配置信息。不過為了更深入理解Page Ability的創建和使用過程,本節將用純手工的方式創建一個Page Ability。

2. 手動創建Page Ability類

Page Ability是一個普通的Java類,所以我們首先應該創建一個Java類,本例創建的Java類是FirstAbility。任何一個Page Ability類都必須從Ability類繼承,該類屬于ohos.aafwk.ability包,所以FirstAbility的最終形式如下:


3. 在config.json文件中注冊Page Ability

在HarmonyOS App中,任何一個可用的Page Ability,都必須在config.json文件中注冊。Page Ability需要在config.json文件中的abilities部分注冊。abilities是一個對象數組,每一個元素是一個對象,表示一個Ability(包括Page Ability、Data Ability和Service Ability)。FirstAbility的配置代碼如下:


在創建HarmonyOS工程時,IDE已經自動在config.json文件中添加了MainAbility的注冊信息,讀者可以照葫蘆畫瓢,將MainAbility的注冊代碼復制一份,然后略作修改。

這里主要修改了actions、name和label屬性。actions表示一個或多個與Page Ability關聯的動作,可以通過這些action來調用當前的Page Ability。name指定了Page Ability類的全名,本例是com.unitymarvel.demo.FirstAbility。label用于指定窗口的標題文本。

4. 創建布局文件

HarmonyOS App既可以用Java代碼動態創建組件的方式布局,也可以使用布局文件。本例使用布局文件的方式進行布局,這也是我推薦的布局方式。因為使用Java代碼創建復雜的布局非常困難,而且代碼量比較大,代碼難以維護。

HarmonyOS工程的所有布局文件都放在resources/base/layout目錄中,現在創建一個first_layout.xml文件,并輸入下面的代碼:

關于布局的更多內容在后面的章節會詳細討論,這里只要知道,first_layout.xml文件中使用了方向布局,而且是垂直方向。在垂直方向上從上到下放置了3個組件,分別是Button1、Text和Button2。

5. 裝載布局文件

創建完布局文件后,需要與Page Ability關聯才能顯示布局中的組件。通常需要在Page Ability啟動時裝載布局文件,這就要使用到Page Ability的生命周期方法onStart,該方法會在Page Ability開始時調用,通常在onStart方法中做一些初始化的工作,例如,為組件指定事件監聽器。

現在需要在FirstAbility類中添加一個onStart方法,并使用super.setUIContent方法裝載布局文件,代碼如下:

在HarmonyOS App中,任何形式的資源都會與一個int類型的值綁定,以便通過該值引用資源,這些值都在ResourceTable類中以常量(static final形式的變量)形式存在。這些值都是自動生成的,通常以資源文件名作為變量名,前面加上前綴。布局文件的前綴是Layout。如本例的布局文件是first_layout.xml,所以生成的ID是Layout_first_layout。根據這個生成規則,要求資源文件的命名必須符合Java標識符的命名規則,否則無法在ResourceTable類中生成ID。

6. 顯示Page Ability

到現在為止,一個最小的,而且是完整的Page Ability已經完成了,最后一步就是顯示這個Page Ability。如果想讓FirstAbility作為主Ability顯示(HarmonyOS App運行后顯示的第1個Page Ability),可以修改FirstAbility配置信息中的skills部分,將其改成如下形式:

但要主要,可能在config.json文件中還有其他Page Ability的actions也設為action.system.home。而HarmonyOS只會顯示在config.json文件中遇到的第一個主Ability。所以要么將FirstAbility的注冊信息調整為abilities的第1個元素,要么注釋掉其他的action.system.home。

如果想在其他的Page Ability中顯示FirstAbility,需要使用下面的代碼。

 不管使用哪種方式,FirstAbility的效果都會如圖3所示。 

圖3 FirstAbility的顯示效果

7. 銷毀Page Ability

在Page Ability用完后,就需要關閉Page Ability,或稱為銷毀Page Ability,只需要調用下面的代碼即可銷毀Page Ability。

該方法屬于Ability,如果在AbilitySlice(在后面介紹)中調用該方法,需要先獲得包含AbilitySlice的Ability對象。

歡迎訪問李寧老師的【鴻蒙基地】專欄:https://harmonyos.51cto.com/column/17

李寧老師的課程主頁:https://edu.51cto.com/lecturer/974126.html

[[375005]]

©著作權歸作者和HarmonyOS技術社區共同所有,如需轉載,請注明出處,否則將追究法律責任

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

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

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-01-06 10:59:14

鴻蒙HarmonyOSPage Abilit

2020-12-28 11:19:06

鴻蒙HarmonyOSPage Abilit

2010-11-10 09:11:37

Windows Pho

2012-12-07 10:52:29

2012-02-27 09:20:43

Julia編程語言

2015-09-28 17:22:44

浪潮

2021-06-02 08:19:05

Web性能HTML

2022-06-17 15:54:31

自動化數字員工

2012-03-19 09:14:26

2012-07-06 10:19:07

HTML5

2014-11-24 09:23:22

華為數據中心

2016-09-26 15:40:52

2011-06-27 08:57:23

JavaScript

2015-01-30 17:18:26

捕魚3樊少強Testin崩潰大師

2021-07-01 09:19:56

鴻蒙HarmonyOS應用

2018-04-10 11:34:30

華為云生態大會

2013-03-21 19:58:10

ASC13亞洲大學生超

2021-06-28 14:41:36

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一二区 | 欧美一级免费看 | 欧美一级在线观看 | 亚洲视频在线一区 | 国产一区二区三区高清 | 一区二区在线看 | 伊人91在线 | 91啪影院| 亚洲国产成人精品女人久久久 | 精品久久久久久久 | 国产精品久久影院 | 91精品免费视频 | 午夜精品一区 | 国产精品美女久久久久久免费 | 美女毛片免费看 | 69电影网| 欧美精品久久久久久久久久 | 欧美不卡 | 色综合天天网 | 蜜臀91视频| www成人免费| 亚洲精品久久国产高清情趣图文 | 亚洲人人舔人人 | 国产成人jvid在线播放 | 日韩三级电影在线看 | 日本久久久一区二区三区 | 在线看91 | 欧美激情一区二区三区 | 国产日韩一区二区三区 | 米奇成人网 | 国产综合一区二区 | 国产成人99av超碰超爽 | 久久久这里只有17精品 | 婷婷五月色综合香五月 | 午夜欧美| 成人在线免费电影 | 日韩国产精品一区二区三区 | 日韩快播电影网 | 在线播放国产一区二区三区 | 一级片av| 久久人体视频 |