HarmonyOS 是一款“面向未來”乏冀、面向全場景(移動辦公桅锄、運動健康劫哼、社交通信叮趴、媒體 娛樂等)的分布式操作系統(tǒng)。在傳統(tǒng)的單設(shè)備系統(tǒng)能力的基礎(chǔ)上权烧,HarmonyOS 提出了基 于同一套系統(tǒng)能力眯亦、適配多種終端形態(tài)的分布式理念,能夠支持多種終端設(shè)備般码。
注冊與實名認證
首先妻率,我們先點擊這里去跳轉(zhuǎn)到 鴻蒙官方網(wǎng)站
點擊右上角的注冊按鈕進行注冊。
注冊完成后再進行實名認證(一般就是個人開發(fā)者)板祝。
鴻蒙開發(fā)工具下載
鴻蒙開發(fā)使用的語言一共有三個
Java(主推)
JS
C/C++
據(jù)說鴻蒙3.0的時候還會推出來一款開發(fā)語言:倉頡
鴻蒙應(yīng)用開發(fā)(手機app)- Java
鴻蒙設(shè)備開發(fā)(硬件開發(fā))- C/C++
開發(fā)工具的常見設(shè)置
修改主題
設(shè)置字體大小
取消注釋斜體并修改注釋的顏色
自動導(dǎo)包
提示忽略大小寫
因為所有的設(shè)置必須要進入項目才能設(shè)置宫静,所以要新建一個項目
點擊設(shè)置修改為黑色主題
項目結(jié)構(gòu)介紹
因為 HUAWEI 是基于 IDEA 二次開發(fā)的,所以也是以下 4 種
項目
模塊
包(里面東西比較多)
類
Project 下面分別有2個
一個就是我們創(chuàng)建的項目
另外一個就是 java包(External Libraries)
External Libraries
<SDK(API Version 5)> 這個就是華為提供的鴻蒙相關(guān)的 API 版本為5
<1.8> 這個就是 Java 相關(guān)的 JDK 版本是 8
下面的3個 Gradle 就是幫助我們自動構(gòu)建項目的工具
接下來看我們創(chuàng)建的項目結(jié)構(gòu)
.gradle 項目管理工具 點開會發(fā)現(xiàn)版本是 6.3 這個文件夾我們一般是不會去動的
.idea 是開發(fā)工具 Studio 的一些信息 同樣也不會動它的
entry 是應(yīng)用的主模塊 所以要提出來重要講解
gradle(以及下面的文件) 都是一些配置 和 Java包 一般都是使用默認的就好了
entry
libs 需要自己手動導(dǎo)入 第三方的 Java包 那么就導(dǎo)入到這個里面
src 這個里面裝著我們所有寫的代碼
src
main 最主要的部分(存放代碼)
ohosTest 利用華為提供的鴻蒙寫的測試類
test 這個是導(dǎo)入 Junit 寫的測試類
main
java 代碼要放在這個里面 不能存放在其他地方
resources 這個是資源(App用到的圖片扔字、音頻囊嘉、視頻等等)
config.json app本身的一些配置信息(版本、公司廠商一些信息)
為了大家看的更清楚革为,我把信息整理成了圖片
鴻蒙第一個入門應(yīng)用:HelloWorld
一個項目被創(chuàng)建后扭粱,自帶 HelloWorld 我們主要學(xué)習(xí)
- 如何運行項目
- 頁面中的包含關(guān)系
- 學(xué)習(xí)項目的配置文件:config.json
- 了解程序的運行過程
運行項目
- 登錄華為開發(fā)者賬號 Tools -> Device Manager 登錄
- 選擇并開啟模擬器 Tools -> Device Manager -> Phone -> P40
- 運行項目
頁面中的包含關(guān)系
- 在鴻蒙里面,一個頁面就是一個 Ability
- 里面會添加一個子頁面 AbilitySlice (切片或者片段)
- 再添加一段文本信息:你好震檩,世界
- 鴻蒙App 會把每一個 Ability 打包成一個文件(文件的后綴就是Hap) 每一個 Ability 對應(yīng)一個 Hap 包 是為了可以實現(xiàn)可分可合的作用琢蛤,單獨的 Hap 包 是可以下載的。
在開發(fā)中抛虏,一個單獨的功能 博其,對應(yīng)著一個 Ability。 如果在這個功能中需要進行切換迂猴,那么就可以在 Ability 中寫多個子頁面 AbilitySlice 進行切換慕淡。
config.json
- 跟應(yīng)用相關(guān)的所有信息,都會在這個文件中配置
- 項目的配置(app):廠商信息沸毁,項目的版本號
- 應(yīng)用在設(shè)備上的配置信息(deviceConfig):應(yīng)用運行時進程名峰髓,是否允許使用流量傻寂,是否支持未解鎖時啟動
- 代碼中的配置(module):所有的 Ability
程序的運行過程
- 解析 config.json 文件
- 初始化
- 獲取入口 Ability 的全類名
- 找到 Ability 并運行
- 運行 Ability 中的子頁面
- 加載 xml 文件,展示內(nèi)容
鴻蒙第二個入門應(yīng)用:頁面跳轉(zhuǎn)
實現(xiàn)步驟
- 編寫第一個頁面(文本+按鈕)
- 編寫第二個頁面(文本)
- 給第一個頁面的按鈕添加一個跳轉(zhuǎn)
鴻蒙UI中携兵,提供了兩種編寫布局的方式:
- XML文件疾掰,標簽表示要展示的不同內(nèi)容:<Text> 文本 <Image> 圖片 <Button> 按鈕
- Java 代碼,對象表示要展示的不同內(nèi)容:Text對象 文本徐紧、 Image對象 圖片静檬、Button對象 按鈕
第一個頁面用 XML 實現(xiàn),第二頁面用 Java 代碼實現(xiàn)
- 在 main -> resources -> base -> layout -> ability_main.xml 填寫以下代碼
<?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="第一個頁面"
ohos:text_size="40vp"
/>
<Button
ohos:id="$+id:but1"
ohos:height="match_content"
ohos:width="match_content"
ohos:background_element="red"
ohos:text_size="40fp"
ohos:text="點我"/>
</DirectionalLayout>
- 在 com.example.你的程序名 這個下面右鍵 New -> Ability -> Empty Page Ability(Java) 創(chuàng)建第二個頁面
- 在 slice 里面找到你的第二個頁面的子頁面
package com.example.hmosdemo.slice;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.Text;
import ohos.agp.utils.Color;
public class SecondAbilitySlice extends AbilitySlice {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
//super.setUIContent(ResourceTable.Layout_ability_second);
//1并级、創(chuàng)建布局對象
DirectionalLayout d1 = new DirectionalLayout(this);
//2拂檩、創(chuàng)建文本對象
Text t = new Text(this);
//設(shè)置內(nèi)容
t.setText("第二個頁面");
//設(shè)置文字大小
t.setTextSize(55);
//設(shè)置文字顏色
t.setTextColor(Color.RED);
//3、把文本對象添加到布局當中
d1.addComponent(t);
//4死遭、把布局添加到子界面當中
super.setUIContent(d1);
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
編寫跳轉(zhuǎn)功能
- 在 slice 中第一個頁面的代碼里寫以下代碼
package com.example.hmosdemo.slice;
import com.example.hmosdemo.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.Operation;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener {
Button btn;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
//1广恢、找到按鈕
btn = (Button) findComponentById(ResourceTable.Id_but1);
//2、給按鈕添加一個點擊事件
//如果沒有添加點擊事件呀潭,那么用鼠標點擊按鈕之后是沒有任何反應(yīng)的钉迷。
//如果我們給按鈕添加了點擊事件,那么用鼠標點擊按鈕之后钠署,就可以執(zhí)行對應(yīng)的代碼
//給btn這個按鈕添加了點擊事件
btn.setClickedListener(this);
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
@Override
public void onClick(Component component){
//點擊按鈕之后執(zhí)行的代碼
//跳轉(zhuǎn)到第二個頁面中
if (component == btn){
//只有點擊了這個btn按鈕之后才進行跳轉(zhuǎn)
//跳轉(zhuǎn)到哪個頁面中(意圖)
Intent i = new Intent();
//包含了要跳轉(zhuǎn)的頁面信息
Operation operation = new Intent.OperationBuilder()
.withDeviceId("")//要跳轉(zhuǎn)到哪個設(shè)備上糠聪,如果傳遞一個沒有內(nèi)容的字符串,表示跳轉(zhuǎn)本機
.withBundleName("com.example.hmosdemo")//我要跳轉(zhuǎn)到哪個應(yīng)用上,小括號里面可以寫包名
.withAbilityName("com.example.hmosdemo.SecondAbility")//要跳轉(zhuǎn)的頁面
.build();//表示將上面的三個信息進行打包
//把打包之后的 operation 設(shè)置到意圖當中
i.setOperation(operation);
//跳轉(zhuǎn)頁面
startAbility(i);
}
}
}