2020年度华为开发者大会“HDC Together”于9月10日至9月12日在东莞松山湖成功举办。作为一名开发者,我有幸参加这一年一度的盛会,并且亲身体验了 Harmony OS 2.0 所开发的应用,我惊艳于这款全新的操作系统,并且坚信着未来鸿蒙必将掀起一场风暴!我希望我和对此兴趣勃勃的开发者能够有更多机会靠近漩涡的中心!
开发工具
“工欲善其事,必先利其器”。华为为了开发者能够更快地融入到鸿蒙生态中来,也为我们准备了两款 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
在打开桌面上的启动图标时:
需要你同意一份协议,同意过后点击下一步开始安装必要的SDK,然后就可以顺利打开 IDE 了:
创建第一个项目
选择 Create HarmonyOS Project,进入项目模板选择页面
2.1 创建 Java 模板
选择一个普通的 Java 模板,然后点击 Next 进入下一步
点击 Finish 完成创建
2.2 修改 gradle 路径
File -> Settings...
打开设置页面,输入关键字 Gradle,修改 Gradle 路径为本地路径
设置之后可以避免每次都去 https://services.gradle.org/ 下载 zip 包
2.3 项目文件结构
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 满天星光
这张图是华为开发者大会2020上,余承东 发言时的一张 PPT,我们就来把这个页面开发并展示在 TV 设备上。
2.5 新建布局
首先在 entry 模块下 src/main/resources/base 文件夹下创建 layout 文件夹:
接着,右击layout文件 New -> Layout Resource File
打开 Create Layout Resource File对话框,输入 layout_main
我们成功创建了一个 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
大家在安装时可能会和我一样遇到下载不成功的情况,我最终是通过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 浏览器为默认浏览器。
2.8 第一次运行
打开虚拟设备,这个虚拟设备是有限制时间的,默认1h
接着在这台虚拟设备上运行我们的程序
这样我们就确定我们的项目是一个可运行的项目,接着就可以开始后续的开发了!
功能实现
3.1 引入图片
这是我在网上找的一张星空图,然后把它放入 entry/src/resources/base/media 文件夹:
图片资源访问方式:
- 图片在 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 布局解析图
运行结果:
布局解析:
- DependentLayout 相当于Android RelativeLayout
- DirectionLayout 相当于Android LinearLayout
- Text 相当于Android TextView
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。