一、服务卡片的核心价值与应用场景
服务卡片是HarmonyOS元服务/应用的“轻量化门面”,通过桌面卡片形式展示关键信息,支持用户通过快捷手势(如滑动、点击)实现服务直达,减少页面层级跳转。其核心优势包括:
- 信息前置化:无需打开应用即可展示实时数据(如天气、日程)。
- 交互轻量化:支持点击跳转、按钮操控等轻量交互,提升用户效率。
- 设备适配性:同一卡片可适配手机、平板等多端设备,自动调整布局。
适用场景:
- 工具类应用:展示实时数据(如计步器、汇率换算)。
- 生活服务类:提供快捷入口(如外卖订单跟踪、电影票预订)。
- 内容类应用:推送最新资讯摘要(如新闻、短视频预览)。
二、卡片模板与创建流程
(一)模板选择:匹配功能与设备
选择建议:
- 静态卡片优先用于信息展示(如天气、公告),动态卡片适合交互复杂场景(如列表滑动、实时数据更新)。
- JS模板兼容低版本API(如API 8),ArkTS模板需API 9+且功能更强大。
(二)创建步骤:从模板到工程
1. 入口选择:
- 菜单栏:File > New > Service Widget
- 右键菜单:选中模块文件 → New > Service Widget
2. 模板配置:
- 名称规范:卡片名称需唯一,仅含字母、数字、下划线(如“weatherWidget”)。
- 设备适配:选择支持的尺寸(如“2×2”“4×4”),动态卡片可多选尺寸,静态卡片需指定默认尺寸。
- 关联Ability:选择或创建Form Ability(卡片的运行载体,每个卡片需挂靠一个Ability)。
3. 文件生成:
- 自动创建ets/widget/pages/[名称]Card.ets布局文件。
- 在form_config.json中生成卡片元数据(如尺寸、交互类型)。
示例:创建图文卡片
json
// form_config.json 关键配置
"forms": [
{
"name": "imageWidget",
"src": "./ets/widget/pages/ImageCard.ets",
"isDynamic": false, // 静态卡片
"defaultDimension": "2×2",
"supportDimensions": ["2×2", "4×4"] // 支持两种尺寸
}
]
三、动态与静态卡片开发要点
(一)动态卡片开发关键
1. 状态管理:使用@State或@Link修饰符实现数据响应式更新。
typescript
@Component
struct DynamicCard {
@State data: string = 'Loading...'
build() {
Text(this.data).onClick(() => {
this.data = Updated at ${new Date().toLocaleTimeString()}
})
}
}
2. 列表渲染(API 11+):通过List组件展示动态数据。
typescript
@Component
struct ListCard {
@State items: string[] = ['Item 1', 'Item 2', 'Item 3']
build() {
List({ space: 8 }) {
ForEach(this.items, item => {
ListItem() {
Text(item).fontSize(14)
}
})
}
}
}
(二)静态卡片优化技巧
1. 轻量化设计:
- 避免复杂布局,优先使用Row/Column基础容器。
- 图片资源压缩至100KB以内,使用Image组件的fit属性适配尺寸。
2. 定时刷新:在form_config.json中配置updateEnabled: true及scheduleUpdateTime。
json
{
"updateEnabled": true,
"scheduledUpdateTime": "08:00", // 每天8点刷新
"updateDuration": 1 // 刷新间隔(天)
}
四、预览与适配:确保多端显示一致
(一)实时预览功能
1. 触发方式:保存*.ets文件后,预览器自动刷新。
2. 多场景测试:
- 尺寸测试:在预览器切换“极窄/默认/极宽”模式,检查文本截断、图片拉伸等问题。
- 设备模拟:通过顶部工具栏选择手机/平板机型,查看布局适配效果。
(二)适配最佳实践
1. 响应式布局:
- 使用百分比宽度(如width: '90%')替代固定像素。
- 通过MediaQuery组件获取设备参数,动态调整布局。
typescript
@Component
struct AdaptiveCard {
build() {
MediaQuery() { media =>
if (media.size.width > 720) {
// 平板布局
Row { /* 横向排列 */ }
} else {
// 手机布局
Column { /* 纵向排列 */ }
}
}
}
}
2. 资源分级管理:
- 在resources/base/media下存放默认图片,resources/en-US/media等目录存放语言/地区特定资源。
五、总结:卡片开发的“效率-体验”平衡
服务卡片是HarmonyOS生态的重要流量入口,其开发需兼顾效率与用户体验:
- 新手入门:从静态图文卡片开始,熟练掌握布局语法与适配规则。
- 进阶实践:结合动态卡片实现交互创新(如天气动画、列表加载)。
- 性能优化:通过form_config.json配置内存敏感型卡片(isDynamic: false),降低后台资源占用。
建议在开发中多使用DevEco Studio的实时预览功能,边写边测,确保卡片在不同设备、不同场景下的显示一致性。随着HarmonyOS API的迭代,未来卡片将支持更多高级特性(如跨设备联动),持续关注官方文档更新可保持技术领先性。