在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探索鴻蒙OS應(yīng)用開(kāi)發(fā)的hello world代碼

鴻蒙系統(tǒng)HarmonyOS ? 來(lái)源:51CTO ? 作者:涂啟標(biāo) ? 2021-04-16 15:49 ? 次閱讀

我們就來(lái)更深度的探索hello world代碼背后的東西。

(一)IDE布局解析

pIYBAGB5QDaAXSP8AAGLSQCdpYo925.png

如上截圖,我大體的將整個(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ì)說(shuō)。

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

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

o4YBAGB5QEmAQffPAAEJP0BeUQs398.png

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

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

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

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

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

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

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,也就是說(shuō)你可以增加一個(gè)或者多個(gè)設(shè)備支持,比如可以增加phone(現(xiàn)已發(fā)布beta)。

pIYBAGB5QH6AVu7ZAAFCdUSmN6M755.png

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

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

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

(三)代碼解析

了解了工程目錄后,我們?cè)賮?lái)解析下之前hello world的源碼。在entry-src-main-java-com.xxx.myHarmonyApp目錄下:

pIYBAGB5QI2APrZCAADMYwFBqtc365.png

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

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

pIYBAGB5QKKAIyNQAAHfYUQV56M591.png

這里重寫(@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ù),主要作用是初始化程序。

o4YBAGB5QLGAJvs3AAEVmfzV2ds639.png

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

o4YBAGB5QMGAARYJAAK3qwB99bk635.png

代碼行數(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è)賮?lái)看代碼就比較清晰了。

第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來(lái)設(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)單說(shuō)setUIContent會(huì)解析ResourceTable提供的元素信息創(chuàng)建對(duì)應(yīng)的UI界面。

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

o4YBAGB5QNGAawizAACsx98FH0A865.png

(四)布局文件解析

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

pIYBAGB5QN6AFP3QAAJRpGqnm5M524.png

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

標(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”。

標(biāo)簽

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

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

pIYBAGB5QOyADiXKAAIV6t2-mpM956.png

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

標(biāo)簽

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

o4YBAGB5QPuAbQNLAADc3HZCrzU349.png

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

標(biāo)簽

表示填充顏色

表示填充顏色為白色,IDE的左側(cè)顏色選擇塊還可以鼠標(biāo)選擇。

回到標(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)行看看效果:

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2641

    瀏覽量

    67758
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    鴻蒙OpenHarmony【標(biāo)準(zhǔn)系統(tǒng)編寫“Hello World”程序】 (基于RK3568開(kāi)發(fā)板)

    源碼],創(chuàng)建RK3568開(kāi)發(fā)板的源碼工程。 示例目錄 拉取openharmony項(xiàng)目代碼,在代碼根目錄創(chuàng)建sample子系統(tǒng)文件夾,在子系統(tǒng)目錄下創(chuàng)建hello部件文件夾,
    的頭像 發(fā)表于 04-24 17:32 ?1349次閱讀
    <b class='flag-5'>鴻蒙</b>OpenHarmony【標(biāo)準(zhǔn)系統(tǒng)編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”程序】 (基于RK3568<b class='flag-5'>開(kāi)發(fā)</b>板)

    使用MCUXpresso for VS Code插件開(kāi)發(fā)Zephyr的hello world

    本期來(lái)到Zephyr實(shí)戰(zhàn)經(jīng)驗(yàn)演練,小編帶著大家一起使用MCUXpresso for VS Code插件來(lái)開(kāi)發(fā)一個(gè)屬于Zephyr的hello world
    的頭像 發(fā)表于 01-03 09:21 ?1149次閱讀
    使用MCUXpresso for VS Code插件<b class='flag-5'>開(kāi)發(fā)</b>Zephyr的<b class='flag-5'>hello</b> <b class='flag-5'>world</b>

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

    在上一篇中(前往),我們已經(jīng)跑通了鴻蒙OS應(yīng)用開(kāi)發(fā)的環(huán)境。這篇中,我們就來(lái)更深度的探索hello wor
    發(fā)表于 12-01 10:18

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

    在上一篇中(前往),我們已經(jīng)跑通了鴻蒙OS應(yīng)用開(kāi)發(fā)的環(huán)境。這篇中,我們就來(lái)更深度的探索hello wor
    發(fā)表于 12-02 16:50

    【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】+打印hello world

    Hi3861第一個(gè)程序:打印hello_world通過(guò)學(xué)習(xí)鴻蒙系統(tǒng)的文件架構(gòu),大概知道了hi3861芯片的啟動(dòng)過(guò)程,對(duì)于hi3861外設(shè)開(kāi)發(fā),不需要涉及到內(nèi)核方面的改動(dòng),所以只需要知道hi3861
    發(fā)表于 01-06 22:38

    鴻蒙 OS 應(yīng)用開(kāi)發(fā)初體驗(yàn)

    的操作系統(tǒng)平臺(tái)和開(kāi)發(fā)框架。HarmonyOS 的目標(biāo)是實(shí)現(xiàn)跨設(shè)備的無(wú)縫協(xié)同和高性能。 DevEco Studio 對(duì)標(biāo) Android Studio,開(kāi)發(fā)鴻蒙 OS 應(yīng)用的 IDE。
    發(fā)表于 11-02 19:38

    Android開(kāi)發(fā)之“hello World”的實(shí)現(xiàn)

    按照慣例,同時(shí)也是為了更好地引導(dǎo)讀者進(jìn)入精彩的Android世界,我們接下來(lái)要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的“hello World”例子。
    發(fā)表于 08-24 11:20 ?5635次閱讀
    Android<b class='flag-5'>開(kāi)發(fā)</b>之“<b class='flag-5'>hello</b> <b class='flag-5'>World</b>”的實(shí)現(xiàn)

    NB3000_Hello_World

    NB3000 Hello World,好東西,喜歡的朋友可以下載來(lái)學(xué)習(xí)。
    發(fā)表于 02-18 16:38 ?0次下載

    Hello_World.Constraint

    Hello World,好東西,喜歡的朋友可以下載來(lái)學(xué)習(xí)。
    發(fā)表于 02-22 15:52 ?0次下載

    MICROCHIP MINUTES 4 - HELLO WORLD

    歡迎觀看MICROCHIP MINUTES之MPLAB? X IDE系列短片。在本視頻中,我們將編譯HELLO WORLD應(yīng)用程序。本視頻使用PICDEM? Curiosity開(kāi)發(fā)板及開(kāi)發(fā)
    的頭像 發(fā)表于 06-07 05:46 ?3136次閱讀

    鴻蒙的第一個(gè)世界版Hello World

    js-defalut-pages-index-index.hml。 index.hml 就是我們第一個(gè)工程的首屏頁(yè)面,點(diǎn)擊右側(cè)折疊的 Previewer 欄,等右下方一陣抽搐,就會(huì)成功出現(xiàn)... 您好,世界! 英文的效果呢?不用改詞,鴻蒙 OS
    的頭像 發(fā)表于 01-21 10:05 ?2418次閱讀
    <b class='flag-5'>鴻蒙</b>的第一個(gè)世界版<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>

    HELLO WORLD!

    HELLO WORLD
    發(fā)表于 12-03 16:21 ?8次下載
    <b class='flag-5'>HELLO</b> <b class='flag-5'>WORLD</b>!

    STM32開(kāi)發(fā)入門(二)——Hello World

    STM32開(kāi)發(fā)入門(二)——Hello World
    發(fā)表于 12-07 18:51 ?12次下載
    STM32<b class='flag-5'>開(kāi)發(fā)</b>入門(二)——<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>

    如何在鴻蒙開(kāi)發(fā)板上輸出Hello World

    HarmonyOS 開(kāi)發(fā)快速入門:鴻蒙開(kāi)發(fā)板上輸出 Hello World
    的頭像 發(fā)表于 01-15 16:03 ?1852次閱讀

    RA-RTT體驗(yàn)RT-Thead超級(jí)簡(jiǎn)單的hello world!

    在這篇帖子上,我們?cè)黾幼约旱?b class='flag-5'>代碼,實(shí)現(xiàn)串口輸出hello world等功能
    的頭像 發(fā)表于 10-12 14:36 ?841次閱讀
    RA-RTT體驗(yàn)RT-Thead超級(jí)簡(jiǎn)單的<b class='flag-5'>hello</b> <b class='flag-5'>world</b>!
    主站蜘蛛池模板: 美女全黄网站免费观看 | 午夜视频在线观看免费高清 | 黄色录像视频网站 | 视频在线观看一区二区 | 久草资源在线播放 | 亚洲伊人久久网 | 色狠狠成人综合网 | 操碰91| 色多多高清在线观看视频www | 天天操丝袜 | 男女交性视频免费视频 | 99久热成人精品视频 | 2021最新国产成人精品视频 | 国产做爰一区二区 | 久久88色综合色鬼 | 男男浪荡性受高hnp肉 | 亚欧人成精品免费观看 | 中文字幕一区二区三区精品 | 最近视频在线播放免费观看 | 午夜精品一区二区三区在线观看 | 国产主播精品在线 | 中文字幕色网站 | 好爽毛片一区二区三区四区 | 狠狠色婷婷丁香综合久久韩国 | 狠狠色噜狠狠狠狠色综合久 | 国产三级视频 | 巨乳色最新网址 | 国产一级片免费看 | videosgratis乱色欧美野外 | 色狠狠一区二区 | 欧美人成网站免费大全 | 亚洲综合激情另类专区 | 精品少妇一区二区三区视频 | 美女视频网站色软件免费视频 | 久久婷婷激情综合色综合也去 | 天天综合色天天桴色 | 性色成人网 | 大又大又粗又爽女人毛片 | 久草老司机 | 亚洲卡1卡2卡新区网站 | 国产精品色婷婷在线观看 |