用Java模板创建你的"Hello, Harmony!"

2020年度华为开发者大会“HDC Together”于9月10日至9月12日在东莞松山湖成功举办。作为一名开发者,我有幸参加这一年一度的盛会,并且亲身体验了 Harmony OS 2.0 所开发的应用,我惊艳于这款全新的操作系统,并且坚信着未来鸿蒙必将掀起一场风暴!我希望我和对此兴趣勃勃的开发者能够有更多机会靠近漩涡的中心!

开发工具

“工欲善其事,必先利其器”。华为为了开发者能够更快地融入到鸿蒙生态中来,也为我们准备了两款 IDE,我们在华为开发者联盟官方网站就可以看到 ———
download IDE

  • DevEco Studio 2.0 是为了软件应用开发者准备的集成开发环境。风格类似于 Android Studio,也是基于 IDEA 的开源版本进行二次开发得来的。
  • HUAWEI DevEco Device Tool 则是为了硬件开发者准备的 IDE。

1.1 下载

我是一名软件应用开发者,所以我选择前者,下载地址如下:
https://developer.harmonyos.com/cn/develop/deveco-studio

下载时,要求我们注册华为账号。为什么需要注册账号呢?
我在现场问过工作人员这个问题,他们的解答如下:华为在全面开放鸿蒙系统的同时,会在华为开发者联盟内,全面支持鸿蒙应用的应用后台,渠道分发,数据统计,收益分成等等。玩法和目前基于华为开发者联盟开发手机APP差不多。

1.2 解压安装

我们下载得到了一个压缩包,例如:
devecostudio-windows-tool-2.0.8.203.zip
解压后,会得到安装程序,例如:
deveco-studio-2.0.8.203.exe
双击之后安装,基本都是点下一步就可以了。

  • 我个人在 Options 那一步骤,勾选了“创建桌面快捷方式”和“在菜单栏添加 Open Folder as Project”

1.3 安装SDK

在打开桌面上的启动图标时:
image
需要你同意一份协议,同意过后点击下一步开始安装必要的SDK,然后就可以顺利打开 IDE 了:
image

创建第一个项目

选择 Create HarmonyOS Project,进入项目模板选择页面

2.1 创建 Java 模板

image
选择一个普通的 Java 模板,然后点击 Next 进入下一步
image
点击 Finish 完成创建

2.2 修改 gradle 路径

File -> Settings...
image
打开设置页面,输入关键字 Gradle,修改 Gradle 路径为本地路径
image
设置之后可以避免每次都去 https://services.gradle.org/ 下载 zip 包

2.3 项目文件结构

image

src/main/resources 表示资源组目录,资源组目录说明如下:

资源组目录目录说明资源文件
element表示元素资源,以下每一类数据都采用相应的JSON文件来表征。element目录中的文件名称建议与下面的文件名保持一致。每个文件中只能包含同一类型的数据。
media表示媒体资源,包括图片、音频、视频等非文本格式的文件。文件名可自定义,例如:icon.png。
animation表示动画资源,采用XML文件格式。文件名可自定义,例如:zoom_in.xml。
layout表示布局资源,采用XML文件格式。文件名可自定义,例如:home_layout.xml。
graphic表示可绘制资源,采用XML文件格式。文件名可自定义,例如:notifications_dark.xml。
profile表示其他类型文件,以原始文件形式保存。文件名可自定义。

以上表格参考官方文档 :资源文件分类

本文 Demo 中将主要用到 media 文件夹和 layout 文件夹。

2.4 满天星光

image
这张图是华为开发者大会2020上,余承东 发言时的一张 PPT,我们就来把这个页面开发并展示在 TV 设备上。

2.5 新建布局

首先在 entry 模块下 src/main/resources/base 文件夹下创建 layout 文件夹:
image
接着,右击layout文件 New -> Layout Resource File
image
打开 Create Layout Resource File对话框,输入 layout_main
image
我们成功创建了一个 layout_main.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:width="match_parent"
    ohos:height="match_parent"
    ohos:orientation="vertical">
</DirectionalLayout>

Android 和 鸿蒙中的有一些差异,首先是命名空间:

  • Android:xmlns:android="http://schemas.android.com/apk/res/android"
  • Harmony:xmlns:ohos="http://schemas.huawei.com/res/ohos"

线性布局:

  • Android: LinearLayout
  • Harmony: DirectionLayout

2.6 安装远程虚拟机

我们接下来想要调试程序了,所以需要一台设备。目前鸿蒙还未支持手机应用的开发,手头上又没有能用的华为手表或者是华为电视,所以我们只能开发 Tools -> HVD Manager,弹出提示框让我们选择,我们选择 Ok
image
大家在安装时可能会和我一样遇到下载不成功的情况,我最终是通过File -> Invalidate Caches / Restart... ,并且重启计算机,最终运气好才下载成功的。
大家也可以去华为开发者论坛搜索HVD Manager寻找相关解决方案,链接我已经提供好了:
https://developer.huawei.com/consumer/cn/forum/searchlist?sk=HVD%20Manager%20%E4%B8%8B%E8%BD%BD%E5%A4%B1%E8%B4%A5

2.7 登录华为账号

打开 Tools -> HVD Manager,进入Virtual Device Manager -> 点击 Refresh 。使用远程虚拟机目前需要先登录华为账号,该华为账号还需要完成实名认证

有些浏览器会出现登录不成功的情况,建议下载最新的 Chrome 浏览器,并且在 Chrome 浏览器搜索栏输入 chrome://settings/ 打开设置,再向下翻到 默认浏览器 一栏,设置 Chrome 浏览器为默认浏览器。

image

2.8 第一次运行

打开虚拟设备,这个虚拟设备是有限制时间的,默认1h
image
接着在这台虚拟设备上运行我们的程序
image
这样我们就确定我们的项目是一个可运行的项目,接着就可以开始后续的开发了!

功能实现

3.1 引入图片

image
这是我在网上找的一张星空图,然后把它放入 entry/src/resources/base/media 文件夹:
image

图片资源访问方式:

  • 图片在 xml 的中访问方式 $media:galaxy ,类似于 Android 中的 @drawable/galaxy
  • 图片在 Java 中的访问方式 ResourceTable.Media_galaxy, 类似于 Android 中的 R.drawable.galaxy

3.2 布局代码

<?xml version="1.0" encoding="utf-8"?>
<DependentLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
                 ohos:width="match_parent"
                 ohos:height="match_parent"
                 ohos:orientation="vertical"
                 ohos:background_element="$media:galaxy">

    <DirectionalLayout
            ohos:center_in_parent="true"
            ohos:width="match_parent"
            ohos:height="match_content"
            ohos:orientation="vertical">

        <Text
                ohos:width="match_parent"
                ohos:height="match_content"
                ohos:text_alignment="center"
                ohos:text_size="24fp"
                ohos:text_color="#ffffff"
                ohos:text="没有人能熄灭满天星光"/>

        <Text
                ohos:top_margin="8vp"
                ohos:width="match_parent"
                ohos:height="match_content"
                ohos:text_alignment="center"
                ohos:text_size="24fp"
                ohos:text_color="#ffffff"
                ohos:text="每一位开发者,都是华为要汇聚的星星之火"/>
    </DirectionalLayout>

</DependentLayout>

3.3 布局解析图

运行结果:
image

布局解析:
image

  • DependentLayout 相当于Android RelativeLayout
  • DirectionLayout 相当于Android LinearLayout
  • Text 相当于Android TextView
阅读 213

推荐阅读
鸿蒙应用发烧友
用户专栏

0 人关注
1 篇文章
专栏主页