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

程序员一鸣
• 阅读 2

前言

本文基于Api13

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

创建卡片

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

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

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

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

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

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

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

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

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

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

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

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

卡片目录结构

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

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

主要文件介绍

一个卡片的配置,主要是通过三个文件,也就是上面目录结构中的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卡片中使用。

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

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"
      ]
    }
  ]
}

各个字段概述如下:

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

相关总结

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

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

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
陈杨 陈杨
4星期前
鸿蒙5开发宝藏案例分享---一多开发实例(长视频)
【🌟鸿蒙开发宝藏案例大起底!原来官方藏了这么多干货!】大家好呀最近在折腾鸿蒙应用开发的时候,意外发现了官方文档里藏着一堆超实用的开发案例!特别是那个长视频应用的"一多开发"实例,看完直呼"原来还能这样玩!"今天咱们就来好好扒一扒这些隐藏的宝藏,附带手把手
陈杨 陈杨
4星期前
鸿蒙5开发宝藏案例分享---一多开发实例(图片美化)
🌟【鸿蒙开发宝藏案例分享】一次搞定多端适配的图片美化应用开发思路!🌟Hey小伙伴们今天在翻鸿蒙文档时挖到一个超实用的大宝藏!原来官方早就悄悄提供了超多"一多开发"的实战案例,特别是这个图片美化应用的完整实现方案,必须立刻分享给大家!(搓手手.gif)🀀
陈杨 陈杨
4星期前
鸿蒙5开发隐藏案例分享---自由流转的浏览进度接续
✨鸿蒙开发隐藏案例大揭秘!手把手教你玩转应用接续功能✨大家好呀~今天要跟大家分享一个超实用的鸿蒙开发技巧!之前总觉得鸿蒙的官方文档案例藏得太深,最近偶然挖到了「应用接续」相关的宝藏代码,忍不住连夜整理成干货!这篇内容会用最白话的方式超多案例,带大家轻松实
陈杨 陈杨
3天前
鸿蒙5开发宝藏案例分享---自由流转的拖拽多屏联动
🌟【干货预警】鸿蒙开发宝藏案例大揭秘!手把手教你玩转常用功能🌟大家好呀~我是你们的老朋友你的名字,今天在扒拉鸿蒙文档的时候,突然发现官方竟然藏了一堆超实用的开发案例!😱之前总觉得鸿蒙生态资料少,结果这些案例简直就是“新手村外挂”啊!立马熬夜整理了
陈杨 陈杨
1天前
鸿蒙5开发宝藏案例分享---体验流畅的首页信息流
🌟鸿蒙新闻类首页开发全攻略:流畅动效懒加载实战Hey各位鸿蒙开发者!今天要分享一个超实用的鸿蒙新闻类首页开发方案,官方文档里藏着的宝藏案例被我挖出来了!从流畅的Tab切换动效到丝滑的懒加载列表,手把手带大家实现高性能新闻首页👇🚀整体场景效果用户操作
陈杨 陈杨
1天前
鸿蒙5开发宝藏案例分享---三折叠应用开发分享
鸿蒙三折叠应用开发宝藏分享:官方案例详解与实战代码大家好呀!今天在翻鸿蒙文档时发现一个​​超级宝藏​​——官方提供的三折叠开发案例!之前总觉得多设备适配复杂,没想到HarmonyOS早就准备好了完善方案。话不多说,直接上干货,结合代码带大家玩转三折叠屏开发
陈杨 陈杨
1天前
鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析
当然可以!下面是一篇详细、易懂的文章,结合鸿蒙官方案例和实际代码,帮你深入理解Web加载完成时延的优化技巧👇🚀鸿蒙开发宝藏:Web加载完成时延优化实战(附代码解析)大家好呀!今天在翻鸿蒙开发者文档时,发现了一个隐藏的​​性能优化宝藏区​​——官方竟然悄
陈杨 陈杨
1天前
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
当然可以!下面是一篇详细、易懂的文章,结合鸿蒙官方案例和实际代码,帮你深入理解Web加载完成时延的优化技巧👇🚀鸿蒙开发宝藏:Web加载完成时延优化实战(附代码解析)大家好呀!今天在翻鸿蒙开发者文档时,发现了一个隐藏的​​性能优化宝藏区​​——官方竟然悄
布局王 布局王
7小时前
Uniapp开发鸿蒙应用时如何运行和调试项目
经过前几天的分享,大家应该应该对uniapp开发鸿蒙应用的开发语法有了一定的了解,可以进行一些简单的应用开发,今天分享一下在使用uniapp开发鸿蒙应用时怎么运行到鸿蒙设备,并且在开发中怎么调试程序。运行Uniapp项目支持运行到鸿蒙真机和模拟器,不过在这