好像是上周天我的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)
下一步,注意選擇Device Type為Phone
創(chuàng)建完成之后就可以初步的了解如何創(chuàng)建界面并進(jìn)行交互了。
注意:harmonyos
的界面邏輯區(qū)別于Android
,harmonyos
的界面有兩個概念page
和AbilitySlice
.有點(diǎn)類似于功能模塊與具體頁面的關(guān)系。一個page
代表一個功能集,AbilitySlice
復(fù)雜功能的具體實(shí)現(xiàn)頁。
MainAbility
對應(yīng)page。繼承Ability
,需要在onStart
方法里通過setMainRoute
函數(shù)設(shè)置默認(rèn)的界面,即AbilitySlice
MainAbilitySlice
和MyAbilitySlice
對應(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)行效果:自帶國際化語言
實(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"/>
新建MyAbilitySlice
public class MyAbilitySlice extends AbilitySlice {
@Override
protected void onStart(Intent intent) {
super.onStart(intent);
setUIContent(ResourceTable.Layout_ability_my);
}
}
界面很簡單
通過id綁定Button設(shè)置點(diǎn)擊事件