自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

鴻蒙OS應(yīng)用開發(fā)實(shí)踐(二)

系統(tǒng)
在上一篇中(前往),我們已經(jīng)跑通了鴻蒙OS應(yīng)用開發(fā)的環(huán)境。這篇中,我們就來更深度的探索hello world代碼背后的東西。

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

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

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

在上一篇中(前往),我們已經(jīng)跑通了鴻蒙OS應(yīng)用開發(fā)的環(huán)境。這篇中,我們就來更深度的探索hello world代碼背后的東西。

(一)IDE布局解析


如上截圖,我大體的將整個(gè)界面進(jìn)行了拆分:最頂部紅色區(qū)域是菜單欄,左邊藍(lán)色區(qū)域是項(xiàng)目工程,右邊大區(qū)是代碼編輯區(qū)域,右上角是工具條(調(diào)試、運(yùn)行),底部是顯示一些如日志、命令、調(diào)試信息。當(dāng)然這里主要是標(biāo)出了幾個(gè)比較大塊而且比較固定的窗口,更細(xì)節(jié)的,比如預(yù)覽界面等這些屬于動(dòng)態(tài)的界面,等有需要的時(shí)候再細(xì)說。

(二)項(xiàng)目工程結(jié)構(gòu)解析

項(xiàng)目工程這里主要存放了項(xiàng)目資源,包含用戶代碼、配置文件、庫文件、圖片、音視頻等。


根目錄就是我們創(chuàng)建項(xiàng)目時(shí)自己定義的項(xiàng)目目錄,.gradle和.idea一般不需要開發(fā)者干預(yù),屬于IDE自動(dòng)創(chuàng)建環(huán)境的目錄。

build文件夾:此目錄為編譯產(chǎn)出目錄,就是編譯后會(huì)在這里產(chǎn)生對(duì)應(yīng).hap包(可以理解為類似ios的.ipa,安卓的.apk)。

entry文件夾:入口目錄,如果是安卓的開發(fā)者,可以對(duì)應(yīng)為app文件夾。這里面存放著我們應(yīng)用程序的核心內(nèi)容,比如代碼、圖片、音視頻資源等等。所以這個(gè)文件夾是重點(diǎn),我們?cè)俳o它展開來剖析:


同樣,在entry目錄下,也有一些眼熟的目錄:

entry-build:跟外層的根項(xiàng)目目錄下的build作用一致。

entry-libs:庫目錄,用于放置庫文件的目錄。

entry-src:存放源文件的目錄,然后內(nèi)部又細(xì)分main目錄和test目錄,main是核心目錄,里面包含核心的程序代碼(main-java)和資源(resources)目錄。config.json是配置信息文件,可以配置諸如包名、版本,設(shè)備類型等。其中設(shè)備類型(deviceType)指定了當(dāng)前程序所支持的設(shè)備,鴻蒙OS會(huì)根據(jù)實(shí)際不同的設(shè)備去加載適合當(dāng)前設(shè)備對(duì)應(yīng)版本的FA。


entry-src-resources:這個(gè)目錄存放著各種資源文件,如應(yīng)用程序用的圖標(biāo)、音效、布局配置等。

entry-src-tesst :這個(gè)是存放測(cè)試代碼的目錄,目前默認(rèn)使用的是junit測(cè)試框架。

gradle:這個(gè)目錄屬于編譯模塊的。

(三)代碼解析

了解了工程目錄后,我們?cè)賮斫馕鱿轮癶ello world的源碼。在entry-src-main-java-com.xxx.myHarmonyApp目錄下:

 

我們可以看到又三個(gè)java代碼文件,其中slice可以對(duì)應(yīng)安卓開發(fā)中的fragment概念。目前官方示例是將邏輯代碼放到了MainAbilitySlice中。

MainAbility.java : 一個(gè)Ability代表了一種能力,我們可以看到這個(gè)MainAbility是繼承自Ability類的:

這里重寫(@Override)了onStart方法,方法里做了兩件事:調(diào)用了父類的onStart方法初始化了intent,另一個(gè)是調(diào)用父類方法設(shè)置路由到slice類,意思就是它把后續(xù)的執(zhí)行邏輯指定給了slice。一般一個(gè)Ability會(huì)對(duì)應(yīng)一個(gè)AbilitySlice。

MyApplication.java:程序的入口,我們看代碼里就只重寫了一個(gè)初始化函數(shù),主要作用是初始化程序。


MainAbilitySlice.java:我們看到上面的兩個(gè)java類中,并沒有執(zhí)行任何的邏輯代碼,那么我們的hello world字樣是怎么輸出的呢?上面說了,MainAbility已經(jīng)把它的執(zhí)行路由給了slice,所以,核心的邏輯代碼就在這個(gè)MainAbilitySlice.java中了。

 代碼行數(shù)不多,我們可以逐行解析,先解析幾個(gè)關(guān)鍵字,因本人之前熟悉的技術(shù)棧是c#,這里也做一個(gè)簡(jiǎn)單的對(duì)標(biāo)參照:

package : 是一個(gè)關(guān)鍵字,指定了一個(gè)包名,格式com.廠商名.應(yīng)用名.模塊。可以類似的對(duì)標(biāo)c#的名稱空間。

import:也是一個(gè)關(guān)鍵字,用于導(dǎo)入其他程序包。也可以對(duì)標(biāo)c#的using關(guān)鍵字。

extends:關(guān)鍵字,表示繼承,對(duì)標(biāo)c#的冒號(hào)。

@Override : 關(guān)鍵字,表示重寫,對(duì)標(biāo)c#的override

supper :關(guān)鍵字,表示基類調(diào)用,可以對(duì)標(biāo)參照c#的base。

ohos : 表示open harmony operating system。

intent : 中間件,作用主要為組件相互調(diào)用提供媒介,協(xié)助組件間的交互與通訊。

所以,有了上面的這些概念,我們?cè)賮砜创a就比較清晰了。

第1行代碼,指定和定義了當(dāng)前類的一個(gè)包名。

3-5行,導(dǎo)入了當(dāng)前所需的包環(huán)境。

7-12行,繼承AbilictySlice擴(kuò)展了MainAbilitySlice類。重寫了onStart方法,調(diào)用基類的onStart初始化intent中間件,再調(diào)用基類的setUIContent來設(shè)置UI內(nèi)容(hello world的創(chuàng)建在這里~)。

14-23行,都為周期函數(shù)的初始化基類調(diào)用。

所以,重點(diǎn)是super.setUIContent(ResourceTable.Layout_ability_main);這句代碼產(chǎn)出了“hello world”,簡(jiǎn)單說setUIContent會(huì)解析ResourceTable提供的元素信息創(chuàng)建對(duì)應(yīng)的UI界面。

ResourceTable用于管理一些窗口小部件資源,Layout_ability_main則對(duì)應(yīng)了entry-src-resources-base-layout目錄下的布局配置。


(四)布局文件解析

打開ability_main.xml對(duì)于hello world的來源已經(jīng)很清晰了:

 

這是一個(gè)xml文件,開頭對(duì)應(yīng)標(biāo)記。 

<DirectionalLayout>標(biāo)簽

鴻蒙的方向布局標(biāo)簽,對(duì)應(yīng)的還有:

xmlns:XML Namespaces表示命名空間。

ohos:heigh = “match_parent”:表示定義了高度適應(yīng)父級(jí)。

ohos : width = “math_parent”:表示寬度適應(yīng)父級(jí)。

ohos:orientation = “vertical”:表示布局方向?yàn)榇怪?,另一個(gè)相對(duì)的值是“horizontal”。

<Text>標(biāo)簽

表示了一個(gè)文本元素。

ohos:id = “$+id:tex_helloworld”:表示text的調(diào)用id,使用”$+id:”來標(biāo)示一個(gè)占位,后跟一個(gè)名稱,這樣在需要調(diào)用這個(gè)text的時(shí)候就能這樣調(diào)用:


ohos:backgound_element=“$graphic:background_ability_main”:表示背景元素指定為另一個(gè)在entry-src-main-resources-base-graphic目錄下的xml配置。

<shape>標(biāo)簽

表示繪制一個(gè)形狀。


ohos:shape = “rectangle”表示繪制一個(gè)矩形。

<solid>標(biāo)簽

表示填充顏色

<solid ohos:color = “#FFFFFF”/>表示填充顏色為白色,IDE的左側(cè)顏色選擇塊還可以鼠標(biāo)選擇。

回到<Text>標(biāo)簽:

ohos:layout_aliment = “horizontal_center”表示文字對(duì)齊方式為橫向居中。

ohos:text = “hello world”這個(gè)就是最終輸出的文本。我們可以改成其他任意字符串試試,比如改成:ohos:text = “你好,鴻蒙!”

ohos:text_size=“50”:表示設(shè)置字體大小為50。

同樣還可以給文字元素添加顏色:

ohos:text_color = “#78FF00”,當(dāng)輸入”#”+任意數(shù)字時(shí),IDE左邊就可以看到顏色選擇塊。

我們可以自定義下配置,可以重新運(yùn)行看看效果:

本篇完,下篇見~

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

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

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

 

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

2020-12-18 10:42:14

鴻蒙開發(fā)應(yīng)用

2020-12-08 09:45:33

鴻蒙OS應(yīng)用開發(fā)

2020-12-03 10:05:07

鴻蒙OS

2022-07-15 12:58:02

鴻蒙攜程華為

2020-12-25 10:52:28

鴻蒙HarmonyOS應(yīng)用開發(fā)

2022-08-04 10:12:49

桌面技術(shù)

2021-01-14 12:06:22

鴻蒙HarmonyOSAI應(yīng)用

2012-12-13 09:47:50

2010-03-02 11:12:33

Android應(yīng)用開發(fā)

2023-02-23 15:56:51

2012-09-17 11:19:49

IBMdw

2021-01-11 11:04:49

鴻蒙HarmonyOS應(yīng)用開發(fā)

2013-02-21 14:15:41

開發(fā)Tizen

2022-11-30 10:34:17

2013-12-17 14:07:37

2010-04-20 09:14:33

Struts

2021-01-06 15:07:02

HarmonyOS實(shí)踐應(yīng)用開發(fā)

2014-11-19 10:08:47

2011-08-24 09:29:00

Silverlight

2021-09-18 10:23:43

Serverless
點(diǎn)贊
收藏

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