鸿蒙互动卡片开发入坑指南——从静态展示到破框动效
·
做鸿蒙开发快半年,最近终于把项目里的静态卡片改成了官方推的互动卡片,踩了整整两天坑,来给大家捋捋清楚。
很多刚接触鸿蒙卡片的朋友可能分不清:动态卡片和互动卡片到底有啥区别?简单说:普通动态卡片只能做简单的刷新,最多加个淡入淡出;但互动卡片不一样,不仅支持帧动画、3D变换,还能调用陀螺仪做交互动效,甚至能把动效做到卡片外面,就是官方说的「破框效果」——比如音乐卡片切歌的时候,音符能漫出卡片到桌面,视觉冲击力直接拉满。
开发互动卡片其实核心就两步,先按照普通ArkTS卡片的流程创建动态卡片当入口,再配置LiveFormExtensionAbility就行。需要注意的是,一定要在module.json5里把extension的type改成live-form,不然后续点击根本触发不了动效,我一开始就是漏了这个配置,卡了快三个小时。
状态管理和数据同步也是个大坑。互动卡片和主应用是跨进程的,如果你做的是音乐卡片,要把主应用的播放状态、收藏状态同步到卡片上,不能直接用Intent传,得用rdb存歌曲列表和状态,用文件存储存触发动作的上下文,主应用切歌之后再调用formProvider.updateForm把最新信息推到卡片上,这样不管开不开应用,桌面卡片都能显示正确状态。
我自己做了个运动打卡的互动卡片,点开始按钮就能触发「破框」的动效,还能实时把消耗的卡路里更回写到卡片上,整体流程走通之后,其实比想象中简单,主要就是配置容易错,跨进程同步要记对方法。感兴趣的朋友可以去官方文档翻一翻互动卡片的开发指南,现在鸿蒙Next对卡片的支持已经挺完善了,做出来的效果确实比静态卡片香太多。
更多推荐




所有评论(0)