当前位置: 首页 > news >正文

鸿蒙 卡片开发服务-ArkTS卡片(二)

本文同步发表于我的微信公众号,微信搜索程语新视界即可关注,每个工作日都有文章更新

ArkTS卡片是基于ArkTS声明式开发范式语言开发的服务卡片。它统一了卡片和应用页面的开发范式,让应用页面的布局可以直接复用到卡片布局中,大幅提升开发效率和开发体验。

亮点说明
统一开发范式应用页面布局可直接复用到卡片,开发效率提升
动效能力支持属性动画和显式动画,交互更友好
自定义绘制支持Canvas画布组件,构建多样显示效果
逻辑代码运行卡片内部可运行部分业务逻辑,拓宽应用场景

二、实现原理

核心角色

角色定义功能
卡片使用方显示卡片内容的宿主应用控制卡片展示位置,当前仅系统应用可作为卡片使用方
卡片提供方提供卡片显示内容的应用控制卡片显示内容、控件布局和点击事件
卡片管理服务管理所添加卡片的常驻代理服务提供formProvider接口能力,管理卡片对象和周期性刷新
卡片渲染服务管理卡片渲染实例运行卡片页面代码widget.abc,将渲染数据发送至卡片使用方

机制:虚拟机隔离

  • 相同卡片提供方:渲染实例运行在同一个ArkTS虚拟机环境中

  • 不同卡片提供方:渲染实例运行在不同的ArkTS虚拟机环境中

  • 作用:通过虚拟机环境隔离,保障不同卡片提供方之间的资源和状态互不干扰

关于globalThis对象

  • 相同提供方卡片:globalThis对象是同一个

  • 不同提供方卡片:globalThis对象是不同的

  • 开发注意:使用globalThis时需考虑作用域影响

三、ArkTS卡片类型

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

类型对比

卡片类型支持能力适用场景优缺点
静态卡片仅支持UI组件和布局能力展示静态信息,UI相对固定功能简单,内存开销小
动态卡片UI组件 + 布局 + 通用事件 + 自定义动效复杂业务逻辑和交互(如图片刷新、内容刷新)功能丰富,内存开销较大
互动卡片动态卡片能力 + 破框动效复杂业务逻辑 + 破框动效视觉体验(如桌面卡片游戏)功能丰富,内存开销较大

1. 静态卡片

特点

  • 仅支持UI组件和布局能力

  • 通过FormLink组件跳转到指定UIAbility

工作原理

  • 整体运行框架与动态卡片一致

  • 卡片渲染服务渲染完毕后,卡片使用方使用最后一帧渲染数据作为静态图片显示

  • 卡片渲染服务中的卡片实例会释放所有运行资源以节省内存

注意事项

  • 频繁刷新会导致静态卡片运行时资源不断创建和销毁

  • 会增加卡片功耗,需谨慎设计刷新策略

2. 动态卡片

特点

  • 支持UI组件和布局能力

  • 支持通用事件能力

  • 支持自定义动效能力(属性动画、显式动画)

适用场景

  • 卡片页面图片刷新

  • 卡片内容定时更新

  • 需要交互响应的场景

3. 互动卡片

支持版本:API version 20+

特点

  • 包含动态卡片所有能力

  • 额外支持破框动效能力

  • 实现更丰富的人机交互

适用场景

  • 信息提醒

  • 浅层交互

  • 可玩性高的场景(如桌面卡片游戏)

四、动态卡片事件交互

核心接口:postCardAction

postCardAction接口用于卡片(Card.ets)和FormExtensionAbility之间的交互,仅在卡片控件的点击事件中可以调用

三种事件类型

事件类型功能使用场景
router事件跳转到应用自身的UIAbility点击卡片跳转应用内页面
call事件拉起应用自身的UIAbility到后台申请后台长时任务,实现音乐播放等
message事件拉起FormExtensionAbility通过onFormEvent回调通知,更新卡片内容

使用示例

// 卡片内点击事件 Button('跳转页面') .onClick(() => { postCardAction(this, { action: 'router', abilityName: 'EntryAbility', params: { target: 'detailPage', id: 123 } }); }) Button('更新卡片') .onClick(() => { postCardAction(this, { action: 'message', params: { actionType: 'refresh', data: '新数据' } }); }) Button('后台播放') .onClick(() => { postCardAction(this, { action: 'call', abilityName: 'PlayAbility', params: { action: 'play' } }); })

五、静态卡片交互组件:FormLink

静态卡片通过FormLink组件实现与提供方应用的交互。

FormLink支持的三种事件

与动态卡片的postCardAction类似,FormLink也支持三种事件类型:

事件类型功能
router跳转到应用页面
message发送消息到FormExtensionAbility
call拉起UIAbility到后台

使用示例

import { FormLink } from '@kit.FormKit' @Entry @Component struct WidgetCard { build() { Column() { Text('静态卡片内容') .fontSize(16) FormLink({ action: 'router', abilityName: 'EntryAbility', params: { target: 'detail' } }) { Text('点击跳转详情') .fontColor('#007dff') } FormLink({ action: 'message', params: { actionType: 'refresh' } }) { Text('点击刷新卡片') .fontColor('#ff6a00') } } .padding(12) .width('100%') .height('100%') } }

六、注意事项

ArkTS卡片支持在UI内运行逻辑代码,相比JS卡片功能更丰富,但也带来了风险考虑。为确保系统渲染进程的稳定性、卡片隔离安全性,以及内存功耗控制,有以下约束:

1. 开发范式约束

约束项说明
开发语言仅支持基于ArkUI开发卡片,不支持跨平台开发
模块导入仅支持导入标识"支持在ArkTS卡片中使用"的模块
HAR支持支持导入HAR静态共享包
HSP支持不支持导入HSP动态共享包
native支持不支持使用native语言开发,不支持加载native so

2. API能力约束

  • ArkTS卡片仅支持声明式范式的部分组件、事件、动效、数据管理、状态管理和API能力

  • 支持在卡片中使用的接口会添加"卡片能力"标记

  • 例如:从API version 12开始,该接口支持在ArkTS卡片中使用

3. 手势交互约束

  • 卡片组件内容的事件处理和卡片使用方的事件处理是独立

  • 不支持卡片内左右滑动的控件(防止手势冲突)

4. 开发工具约束

约束项说明
极速预览不支持
断点调试不支持
Hot Reload热重载不支持
setTimeOut不支持

七、卡片类型选择

业务需求推荐卡片类型理由
纯信息展示,无需交互静态卡片内存开销小,足够满足需求
需要点击跳转页面静态卡片FormLink支持router跳转
需要定时刷新内容动态卡片支持逻辑代码和更新机制
需要复杂动画效果动态卡片支持属性动画和显式动画
需要破框动效互动卡片专有破框动效能力
桌面小游戏互动卡片需要破框动效和复杂交互

内存开销对比

静态卡片:★☆☆☆☆ (内存开销小) 动态卡片:★★★☆☆ (内存开销较大) 互动卡片:★★★★☆ (内存开销较大)

八、总结

ArkTS卡片是鸿蒙系统服务卡片的重要演进方向,通过统一开发范式、增强卡片能力,为开发者提供了更强大的卡片开发体验。

维度要点
开发语言ArkTS声明式范式
卡片类型静态卡片、动态卡片、互动卡片
核心能力动效、自定义绘制、逻辑代码
交互方式postCardAction(动态)、FormLink(静态)
运行环境卡片渲染服务 + 虚拟机隔离
适用设备手机、平板、PC/2in1、智慧屏、智能手表

选择建议

  • 简单展示→ 静态卡片

  • 需要交互刷新→ 动态卡片

  • 需要破框动效→ 互动卡片

http://www.jsqmd.com/news/404402/

相关文章:

  • [AI提效-18]-豆包AI绘图提示词全攻略(新手可直接套用)
  • 模拟3D细胞-Python工程化从0到可部署的多细胞模拟器(三)
  • [AI提效-20]-豆包实操指南:高效完成学术论文的搜索与解读(新手也能上手)
  • 2026年诚信的耐磨尼龙改性颗粒/耐候尼龙改性颗粒生产商实力参考哪家质量好(更新) - 行业平台推荐
  • [AI提效-18]-示例:麦肯锡关键词法洞察:具身智能28个核心术语,读懂行业底层逻辑与发展脉络
  • 2026年专业的无锡生物质锅炉/燃气锅炉哪家强生产厂家实力参考 - 行业平台推荐
  • 2026年知名的间歇式自动喷砂机/手动喷砂机实力厂家口碑参考口碑排行 - 行业平台推荐
  • [AI提效-21]-AI虽然是全知大能,别再当学生请教了,切换领导者视角,指挥它干活!
  • 2026年口碑好的干湿联合闭式冷却塔/干式冷却塔工厂采购指南如何选(实用) - 行业平台推荐
  • 2026年口碑好的无花板风管加工/镀锌板风管加工哪家靠谱可靠供应商参考 - 行业平台推荐
  • 题解:AcWing 873 欧拉函数
  • print the terrain
  • 2026年评价高的钢结构工程/钢结构厂房设计与加工推荐几家可靠供应商参考 - 行业平台推荐
  • Android应用开发核心技术详解与面试指南
  • 2026年评价高的美狮台球杆哪家质量好生产商实力参考 - 行业平台推荐
  • 题解:AcWing 874 筛法求欧拉函数
  • 2026年知名的浙江无人机/无人机制造厂家选购指南怎么选(精选) - 行业平台推荐
  • print the terain
  • 题解:AcWing 872 最大公约数
  • 2026年优秀的分立式储能柜/智慧储能柜实力工厂参考怎么选 - 行业平台推荐
  • 题解:AcWing 871 约数之和
  • 题解:AcWing 870 约数个数
  • 2026年比较好的进口品牌地暖管/高端住宅地暖管怎么选实力工厂参考 - 行业平台推荐
  • 2026年优质的高海拔储能箱式变电站/大容量双分裂光伏箱式变电站供应商采购指南怎么联系 - 行业平台推荐
  • 题解:AcWing 869 试除法求约数
  • 2026年评价高的全自动水渠成型机/水渠成型机供应商采购指南怎么联系 - 行业平台推荐
  • 2026年知名的304不锈钢焊管/316L不锈钢焊管哪家强生产厂家实力参考 - 行业平台推荐
  • 2026年口碑好的美式缓冲铰链/4D缓冲铰链生产商推荐怎么选(可靠) - 行业平台推荐
  • 2026年评价高的吨袋包装机/吨袋真空包装机选哪家高口碑品牌参考 - 行业平台推荐
  • 2026年热门的汽车配件硅胶制品/电力硅胶制品实用供应商采购指南如何选 - 行业平台推荐