为自己的鸿蒙卡片增加编辑能力 原创 精华
作者:周希元
前言:
假设您已经知道了如何为鸿蒙应用增加服务卡片,本文重点介绍如何为卡片增加编辑能力。
如果想了解更多关于创建鸿蒙卡片的知识,请参考鸿蒙官网指南
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-service-widget-provider-js-0000001150602175
示例:
有一个应用的服务卡片在没有编辑功能时,快捷菜单如下,
增加了编辑功能后,快捷菜单变成如下,
可以看到快捷菜单中多了一个“编辑” 菜单,点击“编辑” ,会打开一个新的页面,
这个页面是一个Ability,主要功能是编辑卡片颜色的。
本篇文章介绍如何增加“编辑”菜单,并链接到指定的Ability。
知识点:
formConfigAbility参数
formConfigAbility参数在配置文件config.json中对应的form节点下,它表示卡片的配置跳转链接,采用URI格式,它的作用是指定导航到编辑页面的 Page ability。
配置格式为:ability://单个ability名字
如果不配置“formConfigAbility”参数,则无卡片编辑功能。
比如上面示例中formConfigAbility的配置在,
config.json文件中module节点的abilities子节点下的forms,在拥有编辑功能的form卡片的配置节点下,
{
"jsComponentName": "motto-1x2",
"isDefault": false,
"scheduledUpdateTime": "01:30",
"defaultDimension": "1*2",
"formConfigAbility": "ability://com.droidzxy.timetable.ColorAbility",
"name": "motto",
"description": "彩色星期",
"colorMode": "auto",
"type": "JS",
"supportDimensions": [
"1*2"
],
实践:
1.增加编辑页面
我们下面要做的是,新增加一个编辑页面,然后让选择编辑菜单时打开新增加的编辑页面,
我们在entry->src->main->java上右击,在快捷菜单中选择 New->Ability->Empty Page Ability(Java) ,
我们命名为ConfigAbility,
在代码目录结构上,我们可以看到,创建了如下文件
ConfigAbility.java,
ConfigAbilitySlice.java,
ability_config.xml
我们创建ConfigAbility的时候,默认创建了一个ConfigAbilitySlice,说明默认Ability 是由Slice 组成的 ,实际上页面的加载也可以直接放到Ability里。但当页面内容多,无法同时显示时,我们可以把相同功能设计到同一个slice里面,在满足不同条件时加载不同的slice。
我们新增加的这个页面的默认布局文件为ability_config.xml,预览如下
我们可以在这个页面设计自己需要实现的卡片编辑功能。
2.修改配置文件config.xml
我们在对应的卡片form节点直接增加formConfigAbility属性,或者修改原来的formConfigAbility属性
"formConfigAbility": "ability://com.droidzxy.timetable.ConfigAbility",
3.编译安装
真机上点击卡片的编辑菜单,就会出现如下页面。
4. 读写配置
我们一般在编辑界面通常要做一些设置,这些设置会反应到原来的服务卡片上,这时,我们想到的最简单的方法是通过配置文件的方式,在编辑页面Ability写配置文件,然后在服务卡片对应的Ability里读同样的配置文件,通常会用到类似如下方法
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
Preferences preferences = databaseHelper.getPreferences("pref");
preferences.putString(“name”, strName);
preferences.flush();
但是,实践后我们发现,不同的Ability对应的getContext()是不一样的,即使MainAbility和ConfigAbility是在同一个命名空间下,但它们会有各自的配置文件,所以如果用上述方法访问配置文件,那么是访问不到相同文件的。我们需要把getContext改为getApplicationContext,即
DatabaseHelper databaseHelper = new DatabaseHelper(getApplicationContext());
这样在ConfigAbility写配置文件,然后在MainAbility中读配置文件时,才能保证读写的是同一个文件。
总结:
增加卡片编辑功能就两步,
- 增加一个Java Ability用于显示编辑功能;
- 在config.json中增加formConfigAbility属性并设置为新加的Ability的完整名字;
编辑鸿蒙卡片的功能确实重要,感谢楼主讲解。
这按钮色彩搭配的甚是好看了。
美得很