【共创季稿事节】 HarmonyOS7 互动卡片开发实践:form_config.json 如何绑定普通卡片和 LiveForm
2026/6/18 20:55:19 网站建设 项目流程

文章目录

      • 效果图
      • 文件在哪里
      • 先看音乐卡片配置
      • name:卡片的身份证
      • src:普通卡片页面路径
      • isDynamic:动态卡片能力
      • defaultDimension 和 supportDimensions:尺寸必须对上
      • sceneAnimationParams:互动卡片的关键
      • 快递卡片多了 metadata
      • 新增一张卡片怎么配
      • 排查清单
      • 写在最后

form_config.json是小白最容易忽略的文件。你写了漂亮的 ArkUI 页面,结果系统根本找不到它,大概率就是这里没配对。

这篇就专门讲它。目标很简单:让你知道每个字段是干什么的,改卡片时应该改哪里,出了问题先查哪里。

效果图

form_config.json决定普通卡片和 LiveForm 怎么配对。配置对了,点击普通卡片后,系统才能拉起对应的展开效果。

这篇就把“为什么配置能牵起普通卡片和 LiveForm”讲明白。

文件在哪里

项目里的配置文件在:

entry/src/main/resources/base/profile/form_config.json

里面注册了四张普通卡片:

  • SleepCard
  • DeliveryCard
  • ExerciseCard
  • MusicCard

它们分别对应睡眠、快递、运动、音乐四个互动卡片场景。

先看音乐卡片配置

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

字段多,但小白先抓住 5 个核心字段就够了:

  • name
  • src
  • isDynamic
  • defaultDimension
  • sceneAnimationParams.abilityName

name:卡片的身份证

"name":"MusicCard"

name是卡片名。主页添加卡片时传的form_name,必须和这里一致。

比如Index.ets里最终会传:

'ohos.extra.param.key.form_name':config.cardName

如果config.cardNameMusicCard,那form_config.json里就必须有MusicCard

src:普通卡片页面路径

"src":"./ets/widget/pages/MusicCard.ets"

这个字段指向普通桌面卡片页面。

注意,不是 LiveForm 页面。

也就是说,音乐普通卡片是:

entry/src/main/ets/widget/pages/MusicCard.ets

音乐互动页面是:

entry/src/main/ets/livecardability/pages/MusicLiveCard.ets

src写前者,不写后者。

isDynamic:动态卡片能力

"isDynamic":true

当前项目里四张卡片都设置为动态卡片。这样应用侧才能通过formProvider.updateForm()给桌面卡片下发数据。

比如音乐播放状态、歌曲标题、收藏状态,都是动态更新的。

如果你做的是纯静态展示卡片,可以不需要复杂刷新。但这个项目是互动卡片,建议保持true

defaultDimension 和 supportDimensions:尺寸必须对上

音乐卡片是:

"defaultDimension":"2*4","supportDimensions":["2*4"]

快递卡片是:

"defaultDimension":"2*2","supportDimensions":["2*2"]

如果主页添加时传了2*4,但这里的supportDimensions只有2*2,就会出问题。

小白改尺寸时,记得同时改这两处:

  • form_config.json
  • 主页卡片配置CARD_ITEM_CONFIGS

sceneAnimationParams:互动卡片的关键

这是互动卡片最重要的字段:

"sceneAnimationParams":{"abilityName":"MusicLiveCardAbility"}

它告诉系统:这张普通卡片展开互动区时,应该找哪个 LiveForm Ability。

MusicLiveCardAbility必须在module.json5里注册:

{ "name": "MusicLiveCardAbility", "srcEntry": "./ets/livecardability/MusicLiveCardAbility.ets", "type": "liveForm" }

两个名字必须完全一致。

快递卡片多了 metadata

快递卡片配置里有:

"metadata":[{"name":"isSupportShake","value":"true"}]

这表示快递卡片支持摇动/传感器类交互。因为快递 LiveForm 里会用陀螺仪,所以这里加了额外元信息。

小白可以先不用深究 metadata,但要知道:某些卡片能力不是只靠页面代码,还会在配置里声明。

新增一张卡片怎么配

假设你要新增一个天气卡片,最小配置可以这样写:

{"name":"WeatherCard","displayName":"$string:WeatherCard","description":"$string:WeatherCardDes","src":"./ets/widget/pages/WeatherCard.ets","uiSyntax":"arkts","window":{"designWidth":720,"autoDesignWidth":true},"colorMode":"auto","isDynamic":true,"isDefault":false,"updateEnabled":false,"defaultDimension":"2*2","supportDimensions":["2*2"],"sceneAnimationParams":{"abilityName":"WeatherLiveCardAbility"}}

然后你还要去module.json5注册:

{ "name": "WeatherLiveCardAbility", "srcEntry": "./ets/livecardability/WeatherLiveCardAbility.ets", "type": "liveForm" }

只改form_config.json不够。普通卡片和 LiveForm Ability 要一起补齐。

排查清单

互动卡片打不开时,先查这几项:

  1. name是否和添加时传入的form_name一致。
  2. src文件是否真实存在。
  3. defaultDimension是否在supportDimensions里。
  4. sceneAnimationParams.abilityName是否存在。
  5. module.json5是否注册了同名liveForm
  6. type是否写成liveForm

写在最后

form_config.json是普通卡片和 LiveForm 的牵线人。普通卡片能不能被系统识别、能不能展开互动区,很多时候就卡在这里。

小白记住一句话:src找普通卡片,abilityName找 LiveForm。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询