美文网首页
零基础学鸿蒙第一天

零基础学鸿蒙第一天

作者: 大王叫我来巡山_Cong | 来源:发表于2021-08-26 20:44 被阅读0次

    HarmonyOS 是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体 娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS 提出了基 于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。


    鸿蒙OS.jpg

    注册与实名认证

    首先,我们先点击这里去跳转到 鸿蒙官方网站

    点击右上角的注册按钮进行注册。

    注册完成后再进行实名认证(一般就是个人开发者)。

    鸿蒙开发工具下载

    鸿蒙开发使用的语言一共有三个

    Java(主推)

    JS

    C/C++

    据说鸿蒙3.0的时候还会推出来一款开发语言:仓颉

    鸿蒙应用开发(手机app)- Java

    鸿蒙设备开发(硬件开发)- C/C++

    应用开发下载地址

    设备开发下载地址

    开发工具的常见设置

    • 修改主题

    • 设置字体大小

    • 取消注释斜体并修改注释的颜色

    • 自动导包

    • 提示忽略大小写

    因为所有的设置必须要进入项目才能设置,所以要新建一个项目

    点击设置修改为黑色主题


    修改为黑色主题.jpg 鸿蒙字体的设置 鸿蒙字体的设置.jpg 取消注释斜体并修改注释的颜色 注释文字修改.jpg 提示忽略大小写 提示忽略大小写.jpg 自动导包 自动导包.jpg

    项目结构介绍

    因为 HUAWEI 是基于 IDEA 二次开发的,所以也是以下 4 种

    项目

    模块

    包(里面东西比较多)

    Project 下面分别有2个

    一个就是我们创建的项目

    另外一个就是 java包(External Libraries)

    External Libraries

    <SDK(API Version 5)> 这个就是华为提供的鸿蒙相关的 API 版本为5

    <1.8> 这个就是 Java 相关的 JDK 版本是 8

    下面的3个 Gradle 就是帮助我们自动构建项目的工具

    接下来看我们创建的项目结构

    .gradle 项目管理工具 点开会发现版本是 6.3 这个文件夹我们一般是不会去动的

    .idea 是开发工具 Studio 的一些信息 同样也不会动它的

    entry 是应用的主模块 所以要提出来重要讲解

    gradle(以及下面的文件) 都是一些配置 和 Java包 一般都是使用默认的就好了

    entry

    libs 需要自己手动导入 第三方的 Java包 那么就导入到这个里面

    src 这个里面装着我们所有写的代码

    src

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

    ohosTest 利用华为提供的鸿蒙写的测试类

    test 这个是导入 Junit 写的测试类

    main

    java 代码要放在这个里面 不能存放在其他地方

    resources 这个是资源(App用到的图片、音频、视频等等)

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

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

    鸿蒙项目结构.png

    鸿蒙第一个入门应用:HelloWorld

    一个项目被创建后,自带 HelloWorld 我们主要学习

    • 如何运行项目
    • 页面中的包含关系
    • 学习项目的配置文件:config.json
    • 了解程序的运行过程

    运行项目

    • 登录华为开发者账号 Tools -> Device Manager 登录
    • 选择并开启模拟器 Tools -> Device Manager -> Phone -> P40
    • 运行项目

    页面中的包含关系

    • 在鸿蒙里面,一个页面就是一个 Ability
    • 里面会添加一个子页面 AbilitySlice (切片或者片段)
    • 再添加一段文本信息:你好,世界
    • 鸿蒙App 会把每一个 Ability 打包成一个文件(文件的后缀就是Hap) 每一个 Ability 对应一个 Hap 包 是为了可以实现可分可合的作用,单独的 Hap 包 是可以下载的。
      在开发中,一个单独的功能 ,对应着一个 Ability。 如果在这个功能中需要进行切换,那么就可以在 Ability 中写多个子页面 AbilitySlice 进行切换。

    config.json

    • 跟应用相关的所有信息,都会在这个文件中配置
    • 项目的配置(app):厂商信息,项目的版本号
    • 应用在设备上的配置信息(deviceConfig):应用运行时进程名,是否允许使用流量,是否支持未解锁时启动
    • 代码中的配置(module):所有的 Ability

    程序的运行过程

    • 解析 config.json 文件
    • 初始化
    • 获取入口 Ability 的全类名
    • 找到 Ability 并运行
    • 运行 Ability 中的子页面
    • 加载 xml 文件,展示内容

    鸿蒙第二个入门应用:页面跳转

    实现步骤

    • 编写第一个页面(文本+按钮)
    • 编写第二个页面(文本)
    • 给第一个页面的按钮添加一个跳转

    鸿蒙UI中,提供了两种编写布局的方式:

    • XML文件,标签表示要展示的不同内容:<Text> 文本 <Image> 图片 <Button> 按钮
    • Java 代码,对象表示要展示的不同内容:Text对象 文本、 Image对象 图片、Button对象 按钮

    第一个页面用 XML 实现,第二页面用 Java 代码实现

    • 在 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) 创建第二个页面
    • 在 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、创建布局对象
            DirectionalLayout d1 = new DirectionalLayout(this);
    
            //2、创建文本对象
            Text t = new Text(this);
            //设置内容
            t.setText("第二个页面");
            //设置文字大小
            t.setTextSize(55);
            //设置文字颜色
            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);
        }
    }
    

    编写跳转功能

    • 在 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、给按钮添加一个点击事件
            //如果没有添加点击事件,那么用鼠标点击按钮之后是没有任何反应的。
            //如果我们给按钮添加了点击事件,那么用鼠标点击按钮之后,就可以执行对应的代码
            //给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){
            //点击按钮之后执行的代码
            //跳转到第二个页面中
            if (component == btn){
                //只有点击了这个btn按钮之后才进行跳转
                //跳转到哪个页面中(意图)
                Intent i = new Intent();
                //包含了要跳转的页面信息
                Operation operation = new Intent.OperationBuilder()
                        .withDeviceId("")//要跳转到哪个设备上,如果传递一个没有内容的字符串,表示跳转本机
                        .withBundleName("com.example.hmosdemo")//我要跳转到哪个应用上,小括号里面可以写包名
                        .withAbilityName("com.example.hmosdemo.SecondAbility")//要跳转的页面
                .build();//表示将上面的三个信息进行打包
    
                //把打包之后的 operation 设置到意图当中
                i.setOperation(operation);
                //跳转页面
                startAbility(i);
            }
        }
    }
    

    至此,鸿蒙入门的第一天课程已经结束。

    相关文章

      网友评论

          本文标题:零基础学鸿蒙第一天

          本文链接:https://www.haomeiwen.com/subject/zqouiltx.html