HarmonyOS 应用开发尝鲜——开发第一个鸿蒙应用 精华

珲少
发布于 2020-11-27 16:19
浏览
1收藏

HarmonyOS 应用开发尝鲜——开发第一个鸿蒙应用

一、引子

        HarmonyOS 作为国产且开源的一款操作系统,有着越来越高的热度。从一定程度上说,HarmonyOS与其他终端操作系统比较确实有很大的不同,在鸿蒙的开发者官网上,我们可以发现其非常显眼的在强调HarmonyOS的分布式能力,的确,HarmonyOS的很多设计思路都是分布式的,这些我们会在后续的文章中与大家一起逐步尝鲜。

        本帖,我们将一起修改和运行第一个HarmonyOS应用,一起来尝鲜下终端HarmonyOS应用开发的体验。

二、开发环境搭建

        学习HarmonyOS应用开发,开发者网站是最好的资源宝库,其中不仅有各种开发工具可以下载,还提供了详细的开发文档与示例教程。虽然目前HarmonyOS的社区和开发者网站还不是特别完善,文档并不是特别全面,但是对于尝鲜与初学者,这着实是一把巨大的资源,首先你可以从如下网站获取你所需的开发工具,文档等资料:

https://developer.harmonyos.com/cn/home

DevEco Studio 是华为官方的HarmonyOS应用开发IDE,目前官网提供了Windows和MacOS版本可供下载,DevEco Studio本身是一款非常强大的IDE工具,其集成了代码编写,调试运行,打包发布,以及多设备的预览和远程模拟器的功能。

        IDE的下载安装非常简单,安装完成后,打开IDE,其首页面如下图所示:

HarmonyOS 应用开发尝鲜——开发第一个鸿蒙应用-鸿蒙开发者社区可以看到,DevEco Studio 和目前比较流行的开发IDE设计上十分相近,这也是DevEco Studio 开发团队的设计初衷,这种熟悉的体验可以极大的降低开发者对IDE的熟悉成本,将核心精力放在程序本身的开发上。

三、创建第一个HarmonyOS模板应用

        使用DevEco Studio选择Create HarmonyOS Project创建一个新的HarmonyOS应用,DevEco Studio提供了许多工程模板可以选择,目前支持创建Car(车载设备),TV(智慧屏)已经Wearable(可穿戴-手表)设备的工程,后续会支持手机移动设备的模板工程创建。

        例如,我们以TV设备模板为例创建一个HarmonyOS应用工程,工程模板选择Empty Feature Ability(Java)模板,其会创建基于Java语言的一个空的工程模板。即我们常说的HelloWorld工程。DevEco Studio支持使用Java和JS两种语言进行HarmonyOS应用的开发。

        我们创建的模板工程的目录结构如下图所示:

HarmonyOS 应用开发尝鲜——开发第一个鸿蒙应用-鸿蒙开发者社区

        如上图中HarmonyOS的工程目录结构所示,我们只需要关注src下面的目录与文件,其中java文件夹下面存放的是我们的核心源代码,reources文件下会存放资源文件和布局文件。在鸿蒙系统中,一个很重要的概念是HAP(HarmonyOS Ability Package),一个鸿蒙应用程序可以由一个或多个HAP组成,HAP是一种可安装或可调用的工程模块,HAP可以分为Entry和Feature两种类型,Entry类型的HAP是应用的主模块,可以独立安装运行,Feature类型的HAP是独立的功能模块,一个应用程序可以包含多个Feature类型的HAP,也可以不包含。如上图中的entry文件夹,就对应当前应用程序的主HAP。

        Ability表示一种功能或一个能力,在HarmonyOS工程中,Ability可以分为FA(Feature Ability)或PA(Particle Ability),FA用来实现具体的用户功能,会有UI界面,而PA用来处理服务和数据,没有UI界面。Ability可以理解为应用的一个具体的功能点,它通常是一个页面,其中Slice用来处理具体的子功能逻辑(即子页面)。

        现在,我们尝试运行下这个模板工程,目前,对于TV应用,我们可以使用远程模拟器来进行程序的运行和调试,在DevEco Studio的菜单中打开:Tools->HVD Manager可以打开模拟器管理器页面,需要注意,首次打开模拟器管理器需要进行华为开发者认证,在华为开发者网站进行注册后登陆即可。模拟器管理器界面如下图所示:

HarmonyOS 应用开发尝鲜——开发第一个鸿蒙应用-鸿蒙开发者社区

我们创建的是TV的应用模板,可以打开远程TV模拟器进行使用。

       打开模拟器后,使用DevEco Studio中的运行按钮即可对模板工程进行运行,如果一切顺利,你将在模拟器中看到如下的运行结果:

HarmonyOS 应用开发尝鲜——开发第一个鸿蒙应用-鸿蒙开发者社区恭喜你,你的第一个鸿蒙应用已经运行起来了。

四、对工程做些小修改

       目前,我们已经在模拟器上跑起来了一个最简单的HelloWorld鸿蒙应用,但这并不是特别有趣,我们可以尝试对模板做些修改。

        首先,打开ability_main.xml文件,鸿蒙应用的开发与安卓十分类似,都是使用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:orientation="vertical"
    ohos:alignment="center">
    <Text
        ohos:id="$+id:b_sample"
        ohos:height="40fp"
        ohos:width="match_content"
        ohos:text="0"
        ohos:text_size="40fp"
        ohos:top_margin="100fp"
        />
    <Button
        ohos:id="$+id:button_sample"
        ohos:height="80fp"
        ohos:width="60fp"
        ohos:text_size="40fp"
        ohos:text="+"
        />
</DirectionalLayout>

其中,DirectionalLayout是简单的线性布局容器,设置其orientation属性为vertical则会进行竖直方向的线性布局。在其中,我们放入了两个最基本的UI组件:Text和Button组件,其中Text组件是最基础的文本展示组件,Button是最基础的用户交互按钮组件,组件有许多属性可以对其布局和样式进行配置,后面我们会再专门介绍组件的使用。

        修改MainAbilitySlice.java中的代码如下:

public class MainAbilitySlice extends AbilitySlice {
    private Button button;
    private Text text;

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        this.button = (Button) findComponentById(ResourceTable.Id_button_sample);
        this.text = (Text) findComponentById(ResourceTable.Id_b_sample);
        this.button.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
                int current = Integer.parseInt(text.getText());
                current += 1;
                text.setText(String.valueOf(current));
            }
        });
    }

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

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

可以看到,其组件的获取和用户事件的监听处理逻辑都和Android开发十分类似,上面我们实现了一个计数器,当点击按钮时,计数器自动做加1操作。效果如下:

HarmonyOS 应用开发尝鲜——开发第一个鸿蒙应用-鸿蒙开发者社区

热爱技术 共同学习 QQ群:853684032

 

 

已于2020-11-27 16:19:04修改
2
收藏 1
回复
举报
4条回复
按时间正序
/
按时间倒序
卫斯理
卫斯理

学习鸿蒙在路上(๑•̀ㅂ•́)و✧

回复
2020-11-27 18:02:02
langrisser
langrisser
回复
2020-11-27 18:34:11
wx601cb5b0b658d
wx601cb5b0b658d

光杆司令太真实了

回复
2021-3-2 16:45:30
velen51
velen51

初学者很好的指南。

回复
2021-3-2 20:03:18
回复
    相关推荐