给自己的鸿蒙卡片增加编辑能力
发布时间:2022-02-10 17:21:15 所属栏目:系统 来源:互联网
导读:假设您已经知道了如何为鸿蒙应用增加服务卡片,本文重点介绍如何为卡片增加编辑能力。 如果想了解更多关于创建鸿蒙卡片的知识,请参考鸿蒙官网指南 https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-service-widget-provider-js-0
假设您已经知道了如何为鸿蒙应用增加服务卡片,本文重点介绍如何为卡片增加编辑能力。 如果想了解更多关于创建鸿蒙卡片的知识,请参考鸿蒙官网指南 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", 1. 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()); 1. 这样在ConfigAbility写配置文件,然后在MainAbility中读配置文件时,才能保证读写的是同一个文件。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读