鸿蒙应用从无到有
好像是上周天我的mate30自己升级到harmonyos系统了,用下来基本和安卓一样,操作上略有差异。正好公司任务也不重就抽空了解了一下。
系统定位
HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。
在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,提供全场景(移动办公、运动健康、社交通信、媒体娱乐等)业务能力。
从官方的定义上来看,围绕万物互联为核心的一个系统。以账户为依据进行数据的流动来提升生活各方面的体验。比如周末在家在平板上搜索附近好玩的地方,然后还搜索了行车路线,出门的时候可以将搜索信息同步到手机上,上了车由手机将导航信息同步到车载地图上,通过账户的方式实现数据由平板到手机再到车机的信息共享与流动。
软件下载与环境配置
下载地址 https://developer.harmonyos.com/cn/develop/deveco-studio#download
建议下载 DevEco Studio 2.2 Beta1版,因为有可视化Ui非常的好用
环境配置 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/environment_config-0000001052902427
基本上安装文档一步步来就行了。
创建第一个鸿蒙应用(APP 因为我的老本行是android)
大家安装好的DevEco-Studio,在欢迎页点击Create HarmonyOS Project
,然后选择Empty Ability(Java)
下一步,注意选择Device Type为Phone
20210825152952.jpg
创建完成之后就可以初步的了解如何创建界面并进行交互了。
注意:harmonyos
的界面逻辑区别于Android
,harmonyos
的界面有两个概念page
和AbilitySlice
.有点类似于功能模块与具体页面的关系。一个page
代表一个功能集,AbilitySlice
复杂功能的具体实现页。
MainAbility
对应page。继承Ability
,需要在onStart
方法里通过setMainRoute
函数设置默认的界面,即AbilitySlice
MainAbilitySlice
和MyAbilitySlice
对应AbilitySlice
,继承AbilitySlice
,是page下的实际界面
public class MainAbilitySlice extends AbilitySlice {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
AbilitySlice
需要在onStart
函数通过setUIContent
设置ui的xml地址。和Android的R类似。但是我的xml的文件名是ability_main.xml
,所以ResourceTable索引命名规则是类型_文件名
运行效果:自带国际化语言
实现按钮和点击跳转界面
现在界面上添加一个Next按钮
<?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="$string:mainability_HelloWorld"
ohos:text_size="40vp"
/>
<Button
ohos:height="match_content"
ohos:width="match_content"
ohos:text_size="28vp"
ohos:text="Next"/>
</DirectionalLayout>
给按钮设置一个好看的样式
background_button.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:shape="rectangle">
<corners
ohos:radius="100"/>
<solid
ohos:color="#007DFF"/>
</shape>
<Button
ohos:id="$+id:button"
ohos:height="match_content"
ohos:width="match_content"
ohos:top_padding="8vp"
ohos:bottom_padding="8vp"
ohos:left_padding="70vp"
ohos:right_padding="70vp"
ohos:background_element="$graphic:background_button"
ohos:text="Next"
ohos:text_size="28vp"/>
20210825173152.jpg
新建MyAbilitySlice
public class MyAbilitySlice extends AbilitySlice {
@Override
protected void onStart(Intent intent) {
super.onStart(intent);
setUIContent(ResourceTable.Layout_ability_my);
}
}
界面很简单
20210825173502.jpg
通过id绑定Button设置点击事件
20210825173700.jpg