1.安装DevEco Studio
(按照文档步骤来)
文档中心
2.创建项目
打开DevEco Studio - Create Project - Atomic service
文档中心
3.学习手册
3.1 hml学习手册
3.2 配置文件学习手册
3.3 卡片UX规范
3.4 多规格卡片效果参考
(示例1)https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/Step-Card
(配置1)华为开发者论坛
(示例2)HarmonyOS服务卡片-防疫一码通_鸿蒙社区的技术博客_51CTO博客
(注意:示例中也是多个卡片 手动切换 显隐,做不了根据某个参数自动控制卡片规格;示例1是API6+JAVA实现的,仅config.json的配置可以参考)
3.5 容器组件:swiper、list-item……
注意:在服务卡片中不支持任何动效。
3.6 在hml文件中引入组件
(⚠️注意:在服务卡片中没有用,只在页面中有效)
<element name='swipeview' src='../../common/components/swipeview/swipeview.hml'></element>
<div class="container">
<list scrolleffect="no" >
<list-item clickeffect="false">
<div style="flex-direction : column;">
<swipeview bg-color='#99FF0000'></swipeview>
<swipeview bg-color='#99FF7D00'></swipeview>
<swipeview bg-color='#99FFFF00' hint-color='#00ae9d'></swipeview>
</div>
</list-item>
</list>
</div>
<div class="todo-item"
style="transform : translateX({{ transX }}); opacity : {{ opacity }}; background-color : {{ bgColor }};"
on:touchstart="touchStart"
on:touchmove="touchMove"
on:touchend="touchEnd"
show="{{ isShow }}"
>
<text class="title" style="color: {{hintColor}};" >HINT</text>
<image src="../../images/ic_swipe_praise.png" class="img"></image>
<text class="comment" style="color: {{commentColor}}">这是一个左右滑动回弹的控件,滑动过程中透明度会动态变化,滑动到一定距离控件会消失。</text>
<text class="txt" style="color: {{hintColor}}">Swipe to dismiss this hint</text>
</div>
参考:华为开发者博客
规范:文档中心
4. 数据交互
4.1 修改卡片data数据
import formBindingData from '@ohos.application.formBindingData';
import formInfo from '@ohos.application.formInfo';
import hilog from '@ohos.hilog';
import formProvider from '@ohos.application.formProvider';
export default {
onCreate(want) {
let formData = {
"order": false,
"distribution": false
};
return formBindingData.createFormBindingData(formData);
},
onUpdate(formId) {
let formData = formBindingData.createFormBindingData({
"order": false,
"distribution": true
});
formProvider.updateForm(formId, formData);
}
};
4.2 调用接口
import http from '@ohos.net.http';
wholePoemRequest() {
let httpRequest = http.createHttp();
httpRequest.request(
"https://py.myie9.com/xuxietest/" + this.wholeInput,
{
method: RequestMethod.RequestMethod.GET,
readTimeout: 15000,
connectTimeout: 15000,
},
(error, data) => {
if (error) {
console.log("error code: " + error.code + ", msg: " + error.message)
} else {
let code = data.responseCode
if (ResponseCode.ResponseCode.OK == code) {
this.wholeContent = data.result.toString();
let header = JSON.stringify(data.header);
console.log("result: " + this.wholeContent);
console.log("header: " + header);
} else {
console.log("response code: " + code);
}
}
}
);
}
4.3 打日志
可以使用console.log,但是只能有一个参数,多余参数会打印不出来;
也可以使用hilog.info
4.4 嵌入h5页面
4.5 深色模式
在css上可以通过@media(dark-mode: true) 设置深色模式的样式。
5.相关问题
?在模拟机上看不见服务卡片
检查下config.json中有没有installationFree字段,取值是true还是false。为false时才能显示图标。
用鸿蒙DevEco Studio工具在模拟器和真机上都看不到桌面图标_HarmonyOS问题与回答_云网牛站
?在hml中可以使用swiper吗
可以。但是在卡片中不能自动滑动。
华为开发者论坛
?服务卡片可以动态切换大小吗
不可以,大小在config.json文件中就定好了,可以有多个卡片,但是都会展示出来,也不可以动态控制某个卡片的显隐。(详见上面多规格卡片效果参考)
?harmony2.0支持高版本API吗
不支持。
华为开发者论坛
?如何在log中快速找到自己的调试日志
可以新增自定义筛选器,设置自定义的参数,然后在业务中打印时加上自己自定义的参数,就可以快速筛选出来了。
?在模拟机上为什么打印不出deviceInfo
要使用真机才会显示设备类型(import deviceInfo from '@ohos.deviceInfo')
?使用<image>标签引入本地图片,但图片无法加载
?怎么手动刷新
参考下java的这个华为开发者论坛