色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

探索鴻蒙OS應用開發的hello world代碼

鴻蒙系統HarmonyOS ? 來源:51CTO ? 作者:涂啟標 ? 2021-04-16 15:49 ? 次閱讀

我們就來更深度的探索hello world代碼背后的東西。

(一)IDE布局解析

pIYBAGB5QDaAXSP8AAGLSQCdpYo925.png

如上截圖,我大體的將整個界面進行了拆分:最頂部紅色區域是菜單欄,左邊藍色區域是項目工程,右邊大區是代碼編輯區域,右上角是工具條(調試、運行),底部是顯示一些如日志、命令、調試信息。當然這里主要是標出了幾個比較大塊而且比較固定的窗口,更細節的,比如預覽界面等這些屬于動態的界面,等有需要的時候再細說。

(二)項目工程結構解析

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

o4YBAGB5QEmAQffPAAEJP0BeUQs398.png

根目錄就是我們創建項目時自己定義的項目目錄,.gradle和.idea一般不需要開發者干預,屬于IDE自動創建環境的目錄。

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

entry文件夾:入口目錄,如果是安卓的開發者,可以對應為app文件夾。這里面存放著我們應用程序的核心內容,比如代碼、圖片、音視頻資源等等。所以這個文件夾是重點,我們再給它展開來剖析:

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

entry-build:跟外層的根項目目錄下的build作用一致。

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

entry-src:存放源文件的目錄,然后內部又細分main目錄和test目錄,main是核心目錄,里面包含核心的程序代碼(main-java)和資源(resources)目錄。config.json是配置信息文件,可以配置諸如包名、版本,設備類型等。其中設備類型(deviceType)指定了當前程序所支持的設備,鴻蒙OS會根據實際不同的設備去加載適合當前設備對應版本的FA,也就是說你可以增加一個或者多個設備支持,比如可以增加phone(現已發布beta)。

pIYBAGB5QH6AVu7ZAAFCdUSmN6M755.png

entry-src-resources:這個目錄存放著各種資源文件,如應用程序用的圖標、音效、布局配置等。

entry-src-tesst :這個是存放測試代碼的目錄,目前默認使用的是junit測試框架。

gradle:這個目錄屬于編譯模塊的。

(三)代碼解析

了解了工程目錄后,我們再來解析下之前hello world的源碼。在entry-src-main-java-com.xxx.myHarmonyApp目錄下:

pIYBAGB5QI2APrZCAADMYwFBqtc365.png

我們可以看到又三個java代碼文件,其中slice可以對應安卓開發中的fragment概念。目前官方示例是將邏輯代碼放到了MainAbilitySlice中。

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

pIYBAGB5QKKAIyNQAAHfYUQV56M591.png

這里重寫(@Override)了onStart方法,方法里做了兩件事:調用了父類的onStart方法初始化了intent,另一個是調用父類方法設置路由到slice類,意思就是它把后續的執行邏輯指定給了slice。一般一個Ability會對應一個AbilitySlice。

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

o4YBAGB5QLGAJvs3AAEVmfzV2ds639.png

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

o4YBAGB5QMGAARYJAAK3qwB99bk635.png

代碼行數不多,我們可以逐行解析,先解析幾個關鍵字,因本人之前熟悉的技術棧是c#,這里也做一個簡單的對標參照:

package: 是一個關鍵字,指定了一個包名,格式com.廠商名.應用名.模塊。可以類似的對標c#的名稱空間。

import:也是一個關鍵字,用于導入其他程序包。也可以對標c#的using關鍵字。

extends:關鍵字,表示繼承,對標c#的冒號。

@Override: 關鍵字,表示重寫,對標c#的override

supper:關鍵字,表示基類調用,可以對標參照c#的base。

ohos: 表示open harmony operating system。

intent: 中間件,作用主要為組件相互調用提供媒介,協助組件間的交互與通訊。

所以,有了上面的這些概念,我們再來看代碼就比較清晰了。

第1行代碼,指定和定義了當前類的一個包名。

3-5行,導入了當前所需的包環境。

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

14-23行,都為周期函數的初始化基類調用。

所以,重點是super.setUIContent(ResourceTable.Layout_ability_main);這句代碼產出了“hello world”,簡單說setUIContent會解析ResourceTable提供的元素信息創建對應的UI界面。

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

o4YBAGB5QNGAawizAACsx98FH0A865.png

(四)布局文件解析

打開ability_main.xml對于hello world的來源已經很清晰了:

pIYBAGB5QN6AFP3QAAJRpGqnm5M524.png

這是一個xml文件,開頭對應標記。

標簽

鴻蒙的方向布局標簽,對應的還有等。

xmlns:XML Namespaces表示命名空間。

ohos:heigh= “match_parent”:表示定義了高度適應父級。

ohos : width= “math_parent”:表示寬度適應父級。

ohos:orientation= “vertical”:表示布局方向為垂直,另一個相對的值是“horizontal”。

標簽

表示了一個文本元素。

ohos:id= “$+id:tex_helloworld”:表示text的調用id,使用”$+id:”來標示一個占位,后跟一個名稱,這樣在需要調用這個text的時候就能這樣調用:

pIYBAGB5QOyADiXKAAIV6t2-mpM956.png

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

標簽

表示繪制一個形狀。

o4YBAGB5QPuAbQNLAADc3HZCrzU349.png

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

標簽

表示填充顏色

表示填充顏色為白色,IDE的左側顏色選擇塊還可以鼠標選擇。

回到標簽:

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

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

ohos:text_size=“50”:表示設置字體大小為50.

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

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

我們可以自定義下配置,可以重新運行看看效果:

編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鴻蒙系統
    +關注

    關注

    183

    文章

    2638

    瀏覽量

    66599
收藏 人收藏

    評論

    相關推薦

    鴻蒙OpenHarmony【標準系統編寫“Hello World”程序】 (基于RK3568開發板)

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

    使用MCUXpresso for VS Code插件開發Zephyr的hello world

    本期來到Zephyr實戰經驗演練,小編帶著大家一起使用MCUXpresso for VS Code插件來開發一個屬于Zephyr的hello world
    的頭像 發表于 01-03 09:21 ?590次閱讀
    使用MCUXpresso for VS Code插件<b class='flag-5'>開發</b>Zephyr的<b class='flag-5'>hello</b> <b class='flag-5'>world</b>

    鴻蒙OS應用開發實踐(二)

    在上一篇中(前往),我們已經跑通了鴻蒙OS應用開發的環境。這篇中,我們就來更深度的探索hello wor
    發表于 12-01 10:18

    鴻蒙OS應用開發實踐(二)

    在上一篇中(前往),我們已經跑通了鴻蒙OS應用開發的環境。這篇中,我們就來更深度的探索hello wor
    發表于 12-02 16:50

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

    Hi3861第一個程序:打印hello_world通過學習鴻蒙系統的文件架構,大概知道了hi3861芯片的啟動過程,對于hi3861外設開發,不需要涉及到內核方面的改動,所以只需要知道hi3861
    發表于 01-06 22:38

    鴻蒙 OS 應用開發初體驗

    的操作系統平臺和開發框架。HarmonyOS 的目標是實現跨設備的無縫協同和高性能。 DevEco Studio 對標 Android Studio,開發鴻蒙 OS 應用的 IDE。
    發表于 11-02 19:38

    Android開發之“hello World”的實現

    按照慣例,同時也是為了更好地引導讀者進入精彩的Android世界,我們接下來要實現一個簡單的“hello World”例子。
    發表于 08-24 11:20 ?5565次閱讀
    Android<b class='flag-5'>開發</b>之“<b class='flag-5'>hello</b> <b class='flag-5'>World</b>”的實現

    NB3000_Hello_World

    NB3000 Hello World,好東西,喜歡的朋友可以下載來學習。
    發表于 02-18 16:38 ?0次下載

    Hello_World.Constraint

    Hello World,好東西,喜歡的朋友可以下載來學習。
    發表于 02-22 15:52 ?0次下載

    MICROCHIP MINUTES 4 - HELLO WORLD

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

    鴻蒙的第一個世界版Hello World

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

    HELLO WORLD!

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

    STM32開發入門(二)——Hello World

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

    如何在鴻蒙開發板上輸出Hello World

    HarmonyOS 開發快速入門:鴻蒙開發板上輸出 Hello World
    的頭像 發表于 01-15 16:03 ?1610次閱讀

    RA-RTT體驗RT-Thead超級簡單的hello world!

    在這篇帖子上,我們增加自己的代碼,實現串口輸出hello world等功能
    的頭像 發表于 10-12 14:36 ?638次閱讀
    RA-RTT體驗RT-Thead超級簡單的<b class='flag-5'>hello</b> <b class='flag-5'>world</b>!
    主站蜘蛛池模板: 国产伦精品一区二区三区免费 | 伊人久久综在合线亚洲 | 亚洲毛片网 | 男人一进一出桶女人视频 | 一区二区中文字幕在线观看 | 色即是空 BT | 蜜芽在线播放免费人成日韩视频 | 最近中文字幕在线中文视频 | 热巴两次用约老师屁股发底线球 | 午夜快车神马影视 | 92午夜免费福利757 | 国产高清视频青青青在线 | 国产精品久久久久久久久无码 | 果冻传媒完整免费网站在线观看 | 亚洲专区中文字幕视频专区 | 欧美黑人巨大videos免费 | 国产乱码免费卡1卡二卡3卡四卡 | 无码任你躁久久久久久老妇双奶 | 一个人免费观看在线视频播放 | 国产婷婷色一区二区三区在线 | 精品国产人妻国语 | XXX国产麻豆HD | 91九色麻豆 | 人与禽交3d动漫羞羞动漫 | 色综合99久久久国产AV | 九九热在线视频精品店 | YELLOW视频直播在线观看 | 国产AV电影区二区三区曰曰骚网 | 竹菊影视一区二区三区 | 99久久热视频只有精品 | 成人免费视频无遮挡在线看 | 日产日韩亚洲欧美综合搜索 | 亚洲二区电影 | 亚洲AV无码专区国产精品麻豆 | 中文字幕va一区二区三区 | 在线自拍综合亚洲欧美 | 日本高清不卡码无码v亚洲 日本福利片午夜免费观着 日本粉嫩学生毛绒绒 | 婷婷五月久久丁香国产综合 | 四虎永久在线精品国产 | 中文字幕亚洲男人的天堂网络 | 伊人久久大香线蕉影院95 |