鴻蒙應(yīng)用從無到有

好像是上周天我的mate30自己升級到harmonyos系統(tǒng)了,用下來基本和安卓一樣,操作上略有差異。正好公司任務(wù)也不重就抽空了解了一下。

系統(tǒng)定位

HarmonyOS是一款面向萬物互聯(lián)時代的、全新的分布式操作系統(tǒng)
在傳統(tǒng)的單設(shè)備系統(tǒng)能力基礎(chǔ)上,HarmonyOS提出了基于同一套系統(tǒng)能力、適配多種終端形態(tài)的分布式理念,能夠支持手機(jī)、平板、智能穿戴、智慧屏、車機(jī)等多種終端設(shè)備,提供全場景(移動辦公、運(yùn)動健康、社交通信、媒體娛樂等)業(yè)務(wù)能力。

從官方的定義上來看,圍繞萬物互聯(lián)為核心的一個系統(tǒng)。以賬戶為依據(jù)進(jìn)行數(shù)據(jù)的流動來提升生活各方面的體驗(yàn)。比如周末在家在平板上搜索附近好玩的地方,然后還搜索了行車路線,出門的時候可以將搜索信息同步到手機(jī)上,上了車由手機(jī)將導(dǎo)航信息同步到車載地圖上,通過賬戶的方式實(shí)現(xiàn)數(shù)據(jù)由平板到手機(jī)再到車機(jī)的信息共享與流動。

軟件下載與環(huán)境配置

下載地址 https://developer.harmonyos.com/cn/develop/deveco-studio#download
建議下載 DevEco Studio 2.2 Beta1版,因?yàn)橛锌梢暬疷i非常的好用
環(huán)境配置 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/environment_config-0000001052902427
基本上安裝文檔一步步來就行了。

創(chuàng)建第一個鴻蒙應(yīng)用(APP 因?yàn)槲业睦媳拘惺莂ndroid)

大家安裝好的DevEco-Studio,在歡迎頁點(diǎn)擊Create HarmonyOS Project,然后選擇Empty Ability(Java)

20210825152502.jpg

下一步,注意選擇Device Type為Phone
20210825152952.jpg

創(chuàng)建完成之后就可以初步的了解如何創(chuàng)建界面并進(jìn)行交互了。
注意:harmonyos的界面邏輯區(qū)別于Android,harmonyos的界面有兩個概念pageAbilitySlice.有點(diǎn)類似于功能模塊與具體頁面的關(guān)系。一個page代表一個功能集,AbilitySlice復(fù)雜功能的具體實(shí)現(xiàn)頁。

20210825160803.jpg

MainAbility對應(yīng)page。繼承Ability,需要在onStart方法里通過setMainRoute函數(shù)設(shè)置默認(rèn)的界面,即AbilitySlice
MainAbilitySliceMyAbilitySlice對應(yīng)AbilitySlice,繼承AbilitySlice,是page下的實(shí)際界面

public class MainAbilitySlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

AbilitySlice需要在onStart函數(shù)通過setUIContent設(shè)置ui的xml地址。和Android的R類似。但是我的xml的文件名是ability_main.xml,所以ResourceTable索引命名規(guī)則是類型_文件名
運(yùn)行效果:自帶國際化語言

20210825171634.jpg

實(shí)現(xiàn)按鈕和點(diǎn)擊跳轉(zhuǎn)界面

現(xiàn)在界面上添加一個Next按鈕

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:alignment="center"
    ohos:orientation="vertical">

    <Text
        ohos:id="$+id:text_helloworld"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:background_element="$graphic:background_ability_main"
        ohos:layout_alignment="horizontal_center"
        ohos:text="$string:mainability_HelloWorld"
        ohos:text_size="40vp"
        />

    <Button
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:text_size="28vp"
        ohos:text="Next"/>

</DirectionalLayout>

給按鈕設(shè)置一個好看的樣式
background_button.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:shape="rectangle">
    <corners
        ohos:radius="100"/>
    <solid
        ohos:color="#007DFF"/>
</shape>
    <Button
        ohos:id="$+id:button"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:top_padding="8vp"
        ohos:bottom_padding="8vp"
        ohos:left_padding="70vp"
        ohos:right_padding="70vp"
        ohos:background_element="$graphic:background_button"
        ohos:text="Next"
        ohos:text_size="28vp"/>
20210825173152.jpg

新建MyAbilitySlice

public class MyAbilitySlice extends AbilitySlice {
    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        setUIContent(ResourceTable.Layout_ability_my);
    }
}

界面很簡單


20210825173502.jpg

通過id綁定Button設(shè)置點(diǎn)擊事件


20210825173700.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容