卡片编辑开发指导-半模态编辑页
半模态编辑页介绍
ArkTS卡片提供卡片页面编辑能力,支持实现用户自定义卡片内容的功能,例如:编辑联系人卡片、修改卡片中展示的联系人、编辑天气卡片等。
卡片编辑页分为卡片预览区与卡片编辑区。卡片编辑区的布局是由应用继承FormEditExtensionAbility画出来的,卡片预览区布局由系统决定。
效果预览
| 长按编辑 | 一级编辑页 | 修改后 | 二级编辑页 | 最终效果 |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
使用说明
-
用户在桌面(卡片使用方)上长按卡片,在弹出的菜单栏中点击编辑;
-
卡片使用方识别到卡片提供方继承FormEditExtensionAbility后,拉起卡片提供方的一级编辑页;
-
在一级编辑页中便可直接自定义编辑卡片内容;
-
卡片提供方亦可在FormEditExtensionAbility被拉起后,在回调方法onSessionCreate中直接调用FormEditExtensionContext上下文的startSecondPage方法;
-
卡片使用方在接收到卡片提供方二级页面信息后,拉起二级页面,即可进行页面内容编辑。
工程目录
给出项目中关键的目录结构并描述它们的作用,示例如下:
entry/src/main/ets/
|---common
| |---CommonData.ets // FormData类的定义
| |---PreferencesUtil.ets // 实现封装preference的工具类
|---entryability
| |---EntryAbility.ets // 主进程UIAbility
|---entryformability
| |---EntryFormAbility.ets // 卡片进程Ability
|---entryformeditability
| |---EntryFormEditAbility.ets // 卡片一级编辑页Ability
| |---FormEditSecPageAbility.ets // 卡片二级编辑页Ability
|---model
| |---ExtensionEvent.ets // 二级编辑页跳转控制类
|---pages
| |---FormEditExtension.ets // 卡片一级编辑页页面
| |---FormEditSecPage.ets // 卡片二级编辑页页面
| |---index.ets // 卡片提供方主应用首页
|---widget
| |---pages
| | |---WidgetCard.ets // 卡片页
具体实现
- 卡片编辑能力通过FormEditExtensionAbility实现,可参考卡片编辑开发指导
- 创建继承FormEditExtensionAbility的EntryFormEditAbility类,参考EntryFormEditAbility.ets;
- 在EntryFormEditAbility的onSessionCreate回调方法中创建ExtensionEvent对象,通过此对象注册二级编辑页的跳转接口,参考ExtensionEvent.ets;
- 给ExtensionEvent对象注册的接口中获取EntryFormEditAbility的FormEditExtensionContext上下文,并调用上下文的startSecondPage方法实现卡片二级编辑页的跳转,参考EntryFormEditAbility.ets;
- 在一级编辑页中可通过formProvider的updateform更新卡片,参考FormEditExtension.ets;
- 也可跳转到二级编辑页对卡片编辑。
相关权限
不涉及。
依赖
不涉及。
约束与限制
- 本示例是否支持取决于卡片使用方的实现;
- 本示例为Stage模型,支持API18版本及以上SDK,SDK版本号(API Version 18 Release),镜像版本号(5.1Release);
- 本示例需要使用DevEco Studio 版本号(5.1Release)版本才可编译运行;
- 本示例不涉及系统接口。
下载
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo code\DocsSample\Form\FormEditDemo > .git/info/sparse-checkout
git remote add origin https://gitcode.com/openharmony/applications_app_samples.git
git pull origin master




