Harmony os 卡片开发详细介绍

110 阅读5分钟

FormKit简介

Form Kit(卡片开发服务)t提供了一种在桌面】锁屏等系统应用上嵌入显示应用信息的开发框架和API,可以将应用内用户关注的重要信息或常见操作抽取到服务卡片(简称“卡片”)上,通过将卡片添加到桌面、锁屏等系统应用上,已达到信息展示、服务直达的便捷体验效果。 鸿蒙第四期活动

1 卡片的使用场景

  • 支持设备类型:手机、平板、PC/2in1、智慧屏、智能手表。轻量级智能穿戴设备不支持使用本Kit。
  • 支持开发卡片应用类型:应用和元服务内均支持开发卡片。
  • 支持卡片使用位置:用户可以在桌面、锁屏等系统应用上添加使用,不支持在普通应用内嵌入显示卡片。
  • 卡片常见使用步骤:
  1. 长按“桌面的应用图标”,弹出操作菜单。
  2. 点击“卡片”选项,进入卡片管理页面,可以预览卡片。
  3. 点击“添加到桌面”按钮,即可在桌面上看到新添加的卡片。

服务卡片架构

image-20251127145312039

2. 卡片场景中涉及到的基本概念

  • 卡片使用方:
  • 卡片提供方:
  • 卡片管理服务

3. 卡片提供的功能

  1. 信息呈现:将应用/员服务的重要信息以卡片的显示展示在桌面,支持信息定时更新能力,用户可以随时查看关注的信息
  2. 服务直达:通过点击卡片内按钮,就可以实现功能快捷操作,支持点击后跳转到应用/员服务对应的功能页面,实现功能服务进一步直达的效果

4. 开发模式

当前系统中应用支持Stage和FA两种开发模型,所以Form Kit也同时支持开发者使用Stage模型和FA模型来开发卡片应用,但是更推荐使用Stage模型

4.1 UI开发范式选择

  • Stahge模型支持两种卡片UI开发方式,可以基于ArkTs声明式开发范式语言开发卡片(简称ArkTs卡片)、也可以基于兼容JS的类Web开发范式语言开发卡片(简称JS卡片)
  • FA模型仅仅支持基于类Web范式JS语言开发JS卡片
类别JS卡片ArkTS卡片
开发范式类Web范式声明式范式
组件能力支持支持
布局能力支持支持
事件能力支持支持
自定义效不支持支持
自定义绘制不支持支持
逻辑代码执行不支持支持

亮点特征

  1. 统一开发范式
  • AkrkTs卡片统一了卡片和应用页面的开发范式,应用页面的布局可以直接复用到卡片布局中,提升开发体验和开发效率,具体参考如下图1卡片工程结构对比。

image-20251127150250528

  1. 卡片能力增强

    • 新增了动效的能力:ArkTs卡片开发了属性动画和显示动画的能力,是卡片的交互更加友好
    • 新增了自定义回执的能力:ArktS卡片开放了Canvans画布组件的能力,卡片可以使用自定义绘制的能力构建更多样的显示和交互效果
    • 允许卡片中运行逻辑代码:开发逻辑代码运行能力后,因此部分业务逻辑可以在内部实现,拓宽了卡片的业务适用场景。

5.实现原理

  • 卡片使用方:显示卡片内容的宿主应用,控制卡片在宿主中展示的位置,当前仅系统应用可以作为卡片使用方。
  • 卡片提供方:提供卡片显示内容的应用,控制卡片的显示内容、控件布局以及控件点击事件。
  • 卡片管理服务:用于管理系统中所添加卡片的常驻代理服务,提供formProvider的接口能力,同时提供卡片对象的管理与使用以及卡片周期性刷新等能力。
  • 卡片渲染服务:用于管理卡片渲染实例,渲染实例与卡片使用方的卡片组件一一绑定。卡片渲染服务根据form_config.json配置的卡片信息运行widget.abc文件的卡片页面代码进行渲染,并将渲染后的数据发送至卡片使用方对应的卡片组件。

image-20251127150849092

6.ArkTS卡片类型

ArkTS卡片分为动态卡片、静态卡片和互动卡片三种类型。

静态卡片整体的运行框架、渲染流程与动态卡片是一致的。主要区别在于,卡片渲染服务将卡片内容渲染完毕后,卡片使用方会使用最后一帧渲染的数据作为静态图片显示,其次卡片渲染服务中的卡片实例会释放该卡片的所有运行资源以节省内存。因此频繁的刷新会导致静态卡片运行时资源不断的创建和销毁,增加卡片功耗。

卡片类型支持的能力适用场景优缺点
静态卡片仅支持UI组件和布局能力。主要用于展示静态信息(UI相对固定),仅可以通过FormLink组件跳转到指定的UIAbility。功能简单但可以有效控制内存开销。
动态卡片除了支持UI组件和布局能力,还支持通用事件能力和自定义动效能力。用于有复杂业务逻辑和交互的场景。例如:卡片页面图片的刷新、卡片内容的刷新等。功能丰富但内存开销较大。
互动卡片在动态卡片基础上,额外支持溢出动效能力。用于有复杂业务逻辑和交互,需要执行溢出动效呈现更好视觉体验的场景。例如:桌面卡片游戏等。功能丰富但内存开销较大。