鸿蒙开发:简单实现一个服务卡片

前言

本文基于Api13

上篇文章,我们简单了解了服务卡片的相关知识,那么这篇文章,我们就从0到1实现一个服务卡片。

创建卡片

创建卡片很简单,可以在Application或者在元服务中,在你的主模块下,任意的文件下进行右键,选择New->Service Widget,选择你要实现静态或者动态卡片,这里,大家不用纠结,因为在创建完成之后,我们可以在form_config.json配置文件中,通过isDynamic参数修改卡片类型,为空或者true,则是动态卡片,false则为静态卡片,所以,在这里,你选择哪一个都没问题。

image.png

目前静态提供了5个模版,动态提供了4个,大家可以根据实际的业务需求,选择其中一个即可。

image.png

选择好一个模版之后,就进入到了如下的页面,也就是服务卡片的配置页面,从上到下分别为,Service widget name:服务卡片的名字;Display name,卡片显示的名字;description:卡片的描述信息;Language:开发语言,这里建议ArkTs;supportDimensions:卡片支持的外观规,1 * 2:表示1行2列的二宫格,以此类推;Ability name:卡片生命周期管理文件。

image.png

配置填完之后,点击底部的Finish,我们就完成了一个默认的服务卡片,可以直接运行,运行之后,长按桌面图标后,就会显示卡片的选项:

image.png

点击卡片后,就会展示出默认的卡片UI,我们可以点击添加至桌面:

image.png

这样就会在桌面上显示我们刚才创建的服务卡片:

image.png

卡片目录结构

创建完之后,会在我们原有的项目中生成如下文件,首先是entryformability包下的EntryFormAbility文件,它是卡片扩展模块,主要提供卡片创建、销毁、刷新等生命周期回调;widget包的pages下的WidgetCard,主要是基于ArkUI提供卡片UI开发能力;resources下的form_config.json配置文件,主要用于配置WidgetCard相关信息。

image.png

主要文件介绍

一个卡片的配置,主要是通过三个文件,也就是上面目录结构中的EntryFormAbility文件、WidgetCard文件和form_config.json配置文件,我们逐一进行分析一下:

EntryFormAbility文件

主要是卡片扩展模块,提供卡片创建、销毁、刷新等生命周期回调,继承于FormExtensionAbility,源码如下:

export default class EntryFormAbility extends FormExtensionAbility {
  onAddForm(want: Want) {
    // Called to return a FormBindingData object.
    const formData = '';
    return formBindingData.createFormBindingData(formData);
  }

  onCastToNormalForm(formId: string) {
    // Called when the form provider is notified that a temporary form is successfully
    // converted to a normal form.
  }

  onUpdateForm(formId: string) {
    // Called to notify the form provider to update a specified form.
  }

  onFormEvent(formId: string, message: string) {
    // Called when a specified message event defined by the form provider is triggered.
  }

  onRemoveForm(formId: string) {
    // Called to notify the form provider that a specified form has been destroyed.
  }

  onAcquireFormState(want: Want) {
    // Called to return a {@link FormState} object.
    return formInfo.FormState.READY;
  }
}

onAddForm:卡片提供方接收创建卡片的通知接口,formBindingData.FormBindingData对象,是卡片要显示的数据;onCastToNormalForm:卡片提供方接收临时卡片转常态卡片的通知接口;onUpdateForm:卡片提供方接收携带参数的更新卡片的通知接口,获取最新数据后调用formProvider的updateForm接口刷新卡片数据;onFormEvent:卡片提供方接收处理卡片事件的通知接口;onRemoveForm:卡片提供方接收销毁卡片的通知接口;onAcquireFormState:卡片提供方接收查询卡片状态通知接口,默认返回卡片初始状态(该方法可以选择性重写)。

WidgetCard文件

主要是卡片UI视图,可以在这里对卡片进行绘制,支持声明式范式的部分组件、事件、动效、数据管理、状态管理能力,在使用的时候,可以查看官方Api中是否标记了“卡片能力”的标记,如果标记了,证明是可以在ArkTS卡片中使用。

image.png

form_config.json配置文件

form_config配置文件,就是服务卡片配置填的那些信息,如下所示:

{
  "forms": [
    {
      "name": "widget",
      "displayName": "$string:widget_display_name",
      "description": "$string:widget_desc",
      "src": "./ets/widget/pages/WidgetCard.ets",
      "uiSyntax": "arkts",
      "window": {
        "designWidth": 720,
        "autoDesignWidth": true
      },
      "colorMode": "auto",
      "isDynamic": true,
      "isDefault": true,
      "updateEnabled": false,
      "scheduledUpdateTime": "10:30",
      "updateDuration": 1,
      "defaultDimension": "2*2",
      "supportDimensions": [
        "2*2"
      ]
    }
  ]
}

各个字段概述如下:

image.png

相关总结

form_config配置文件里面可选的属性非常之多,以上的表格,并未列举全面,大家在写的时候,一定要去官方文档进行查阅。

本文标签:HarmonyOS/服务卡片,参考资料:官方文档之服务卡片指导。

#鸿蒙开发#
鸿蒙点石成金 文章被收录于专栏

简单的也好,复杂的也罢,关于HarmonyOS,总要深入浅出,总要步步为赢。

全部评论

相关推荐

作为一名月薪 10K(税前)的嵌入式软件工程师,在海淀区生活是可以实现的,但需要精打细算 —— 毕竟海淀区是北京核心城区(高校、科技企业密集),生活成本偏高,尤其房租是最大支出项。一、先算 “硬性支出”:控制在 7000-8000 元 / 月月薪 10K 税前,扣除五险一金(按最低基数缴纳的话),实际到手大概 8000-8500 元。这部分钱需要优先覆盖 “必须花” 的费用:1. 房租:3000-4000 元(最大头)海淀区的房租是 “大头”,但合租能大幅降低成本:核心地段(如五道口、中关村、西二旗附近):合租次卧(10-15㎡)大概 3500-4000 元 / 月(离地铁 1 公里内,通勤方便);稍偏一点(如西三旗、上地边缘):合租次卧 2800-3500 元 / 月(可能离地铁 1-2 公里,需要骑车 / 步行)。建议选 “老小区合租”,比新小区便宜 500-800 元,且水电网(合租平摊)每月 300-400 元足够。2. 饮食:1500-2000 元嵌入式工程师加班多,饮食可以 “灵活控制”:工作日:早餐(包子 + 豆浆)5-8 元,午餐(公司附近快餐 / 外卖)20-25 元,晚餐如果公司提供加班餐(很多科技公司有),直接省掉;如果没有,便利店 / 简餐 15-20 元。一天合计 40-50 元,22 天约 900-1100 元。周末:自己做饭(买菜 + 米面油)比外卖便宜一半,两天 100 元足够,8 天约 400 元。偶尔朋友聚餐:每月 1-2 次,控制在 300 元内(人均 50-80 元的小馆子)。总计 1500-2000 元,完全能吃饱吃好。3. 交通:200-300 元海淀区地铁覆盖密集,通勤基本靠地铁:日常通勤:每天往返地铁 6-10 元(比如从西三旗到中关村,地铁 13 号线转 4 号线,往返 8 元),22 天约 200 元;偶尔打车(加班晚 / 赶时间):每月 100 元足够(比如深夜地铁停运,打个拼车)。4. 其他必要开销:1000-1500 元手机话费 + 流量:80-100 元(选联通 / 电信的低价套餐);日用品(牙膏、洗发水、纸巾等):每月 200 元(网购大促时囤货更便宜);衣物:每月 300-500 元(不追潮流,优衣库 / 迪卡侬基础款即可,换季集中买);应急储备:每月 300-500 元(比如感冒买药、突然需要买个配件等)。二、剩余资金:1000-2000 元 / 月扣除上述硬性支出后,每月能剩下 1000-2000 元。这部分可以灵活分配:偶尔改善生活:比如每月吃一次火锅(人均 100 元)、看一场电影(50 元);攒钱:存起来作为 “跳槽备用金”(嵌入式行业跳槽涨薪快,攒 3-6 个月生活费,方便后续换高薪工作)。三、能 “活下来” 的关键:减少 “非必要支出”别追求 “独居自由”:海淀区单间(20㎡)至少 5000 元 / 月,占到手工资 60% 以上,会非常紧张;少点外卖 / 外出就餐:自己买个小电锅,煮面条、焖饭、热速食,每月能省 300-500 元;通勤别太 “娇气”:1-2 公里内骑车 / 步行,既省交通费,又能省健身钱(嵌入式工程师久坐多,正好活动)。总结月薪 10K(税前)在海淀区,完全能 “活下来”,但属于 “温饱线以上、储蓄有限” 的状态 —— 适合刚入行的年轻人(22-25 岁),租房合租、控制消费,既能覆盖基本生活,还能攒点钱应对突发情况。等工作 1-2 年,嵌入式工程师薪资涨到 15K+,生活压力会小很多。
月薪多少能在一线城市生存
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务