零基礎(chǔ)學鴻蒙第一天

HarmonyOS 是一款“面向未來”、面向全場景(移動辦公、運動健康、社交通信、媒體 娛樂等)的分布式操作系統(tǒng)。在傳統(tǒng)的單設(shè)備系統(tǒng)能力的基礎(chǔ)上,HarmonyOS 提出了基 于同一套系統(tǒng)能力、適配多種終端形態(tài)的分布式理念,能夠支持多種終端設(shè)備。


鴻蒙OS.jpg

注冊與實名認證

首先,我們先點擊這里去跳轉(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++

應(yīng)用開發(fā)下載地址

設(shè)備開發(fā)下載地址

開發(fā)工具的常見設(shè)置

  • 修改主題

  • 設(shè)置字體大小

  • 取消注釋斜體并修改注釋的顏色

  • 自動導包

  • 提示忽略大小寫

因為所有的設(shè)置必須要進入項目才能設(shè)置,所以要新建一個項目

點擊設(shè)置修改為黑色主題


修改為黑色主題.jpg

鴻蒙字體的設(shè)置
鴻蒙字體的設(shè)置.jpg

取消注釋斜體并修改注釋的顏色
注釋文字修改.jpg

提示忽略大小寫
提示忽略大小寫.jpg

自動導包
自動導包.jpg

項目結(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 需要自己手動導入 第三方的 Java包 那么就導入到這個里面

src 這個里面裝著我們所有寫的代碼

src

main 最主要的部分(存放代碼)

ohosTest 利用華為提供的鴻蒙寫的測試類

test 這個是導入 Junit 寫的測試類

main

java 代碼要放在這個里面 不能存放在其他地方

resources 這個是資源(App用到的圖片、音頻、視頻等等)

config.json app本身的一些配置信息(版本、公司廠商一些信息)

為了大家看的更清楚,我把信息整理成了圖片

鴻蒙項目結(jié)構(gòu).png

鴻蒙第一個入門應(yīng)用:HelloWorld

一個項目被創(chuàng)建后,自帶 HelloWorld 我們主要學習

  • 如何運行項目
  • 頁面中的包含關(guān)系
  • 學習項目的配置文件: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);
        }
    }
}

至此,鴻蒙入門的第一天課程已經(jīng)結(jié)束。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容