首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

鸿蒙HarmonyOS实战-Stage模型(服务卡片的模块和创建)

  • 25-02-22 03:40
  • 2888
  • 12932
blog.csdn.net

 一、服务卡片的模块和创建

在HarmonyOS中,服务卡片是一种提供即时信息和快速操作的小组件,类似于Android中的通知栏。服务卡片可以显示各种类型的信息,包括通知、天气、日历事件、音乐播放器、快捷方式等。用户可以根据自己的需求配置服务卡片,并通过轻扫或点击来查看详细信息或执行操作。此外,服务卡片还支持互动操作,例如滑动、拖动和长按等,以实现更多功能。用户可以通过设置中的服务卡片管理来管理和定制自己的服务卡片。总的来说,服务卡片是HarmonyOS提供的一种方便快捷的信息展示和操作方式,用户可以根据自己的喜好和需求进行个性化设置和使用。

1.ArkTS卡片相关模块

在这里插入图片描述

名称内容
FormExtensionAbility提供卡片创建、销毁、刷新等生命周期回调的卡片扩展模块。
FormExtensionContextFormExtensionAbility的上下文环境,提供FormExtensionAbility具有的接口和能力。
formProvider提供卡片提供方相关的接口能力,可通过该模块提供接口实现更新卡片、设置卡片更新时间、获取卡片信息、请求发布卡片等。
formInfo提供了卡片信息和状态等相关类型和枚举。
formBindingData提供卡片数据绑定的能力,包括FormBindingData对象的创建、相关信息的描述。
页面布局(Card.ets)提供声明式范式的UI接口能力。
ArkTS卡片特有能力postCardAction用于卡片内部和提供方应用间的交互,仅在卡片中可以调用。
ArkTS卡片能力列表列举了能在ArkTS卡片中使用的API、组件、事件、属性和生命周期调度。
卡片配置包含FormExtensionAbility的配置和卡片的配置。
module.json5配置文件中的extensionAbilities标签配置FormExtensionAbility相关信息。
resources/base/profile/目录下的form_config.json配置文件配置卡片(WidgetCard.ets)相关信息。

2.ArkTS卡片创建

?2.1 创建一个ArkTS卡片

1、新建卡片
在这里插入图片描述
2、根据实际业务场景,选择一个卡片模板
在这里插入图片描述
3、在选择卡片的开发语言类型
在这里插入图片描述
4、创建完成后如下
在这里插入图片描述

?2.2 配置卡片的配置文件

1、卡片需要在module.json5配置文件中的extensionAbilities标签下
在这里插入图片描述
2、卡怕具体配置在form_config.json下
在这里插入图片描述
详细配置信息可以参考:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/arkts-ui-widget-configuration-0000001502333060-V3

?2.3 卡片生命周期管理

  1. import formInfo from '@ohos.app.form.formInfo';
  2. import formBindingData from '@ohos.app.form.formBindingData';
  3. import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility';
  4. import formProvider from '@ohos.app.form.formProvider';
  5. export default class EntryFormAbility extends FormExtensionAbility {
  6. onAddForm(want) {
  7. console.info('[EntryFormAbility] onAddForm');
  8. // 在入参want中可以取出卡片的唯一标识:formId
  9. let formId: string = want.parameters[formInfo.FormParam.IDENTITY_KEY];
  10. // 使用方创建卡片时触发,提供方需要返回卡片数据绑定类
  11. let obj = {
  12. 'title': 'titleOnAddForm',
  13. 'detail': 'detailOnAddForm'
  14. };
  15. let formData = formBindingData.createFormBindingData(obj);
  16. return formData;
  17. }
  18. onCastToNormalForm(formId) {
  19. // Called when the form provider is notified that a temporary form is successfully
  20. // converted to a normal form.
  21. // 使用方将临时卡片转换为常态卡片触发,提供方需要做相应的处理
  22. console.info(`[EntryFormAbility] onCastToNormalForm, formId: ${formId}`);
  23. }
  24. onUpdateForm(formId) {
  25. // 若卡片支持定时更新/定点更新/卡片使用方主动请求更新功能,则提供方需要重写该方法以支持数据更新
  26. console.info('[EntryFormAbility] onUpdateForm');
  27. let obj = {
  28. 'title': 'titleOnUpdateForm',
  29. 'detail': 'detailOnUpdateForm'
  30. };
  31. let formData = formBindingData.createFormBindingData(obj);
  32. formProvider.updateForm(formId, formData).catch((err) => {
  33. if (err) {
  34. // 异常分支打印
  35. console.error(`[EntryFormAbility] Failed to updateForm. Code: ${err.code}, message: ${err.message}`);
  36. return;
  37. }
  38. });
  39. }
  40. onChangeFormVisibility(newStatus) {
  41. // Called when the form provider receives form events from the system.
  42. // 需要配置formVisibleNotify为true,且为系统应用才会回调
  43. console.info('[EntryFormAbility] onChangeFormVisibility');
  44. }
  45. onFormEvent(formId, message) {
  46. // Called when a specified message event defined by the form provider is triggered.
  47. // 若卡片支持触发事件,则需要重写该方法并实现对事件的触发
  48. console.info('[EntryFormAbility] onFormEvent');
  49. }
  50. onRemoveForm(formId) {
  51. // Called to notify the form provider that a specified form has been destroyed.
  52. // 当对应的卡片删除时触发的回调,入参是被删除的卡片ID
  53. console.info('[EntryFormAbility] onRemoveForm');
  54. }
  55. onConfigurationUpdate(config) {
  56. // 当系统配置信息置更新时触发的回调
  57. console.info('[EntryFormAbility] configurationUpdate:' + JSON.stringify(config));
  58. }
  59. onAcquireFormState(want) {
  60. // Called to return a {@link FormState} object.
  61. // 卡片提供方接收查询卡片状态通知接口,默认返回卡片初始状态。
  62. return formInfo.FormState.READY;
  63. }
  64. }

在这里插入图片描述

 ?写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing?,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新VIP学习资料,请点击→全套鸿蒙HarmonyOS学习资料
  • 或者关注小编后私信回复【666】也可获取资料哦~~

最新鸿蒙Next全套学习资料请扫码
微信名片
注:本文转载自blog.csdn.net的蜀道山QAQ的文章"https://blog.csdn.net/shudaoshanQAQ/article/details/135479858"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top