view类不响应自定义消息_安卓平台如何给控件添加自定义操作?

在安卓应用设计和开发过程中,设计人员为了界面简洁、有独特的交互方式,可能会为控件设计特殊的操作手势,例如消息列表中单指按住消息向左滑删除消息;系统顶部的通知单指向左滑可以关闭通知等。

这些操作对于普通用户非常方便,但是此种操作方式没有做特殊支持的话,可能让某些障碍用户无法使用此功能。如果是一名通过屏幕阅读器使用应用的视障用户,他们就很难借助屏幕阅读器完成此操作。

此时,应该像原生Android系统中的通知一样给控件添加自定义操作提示和操作支持。

1、添加自定义操作

重写View类OnInitialzeAccessibilityNodeInfo()的方法:

如果是标准控件,可以通过无障碍代理View.AccessibilityDelegate重写此方法。

在此方法中首先调用父类的实现,然后调用AccessibilityNodeInfo对象的addAction方法添加自定义的事件。

注意:

1.这里添加的自定义事件的事件ID必须大于16进制的0x01ffffff,因为0x01ffffff本身以及小于此值都是系统定义的事件的ID。

2.自定义事件必须提供事件描述文本,不提供描述文本无障碍服务将无法提示和获取到此事件。下面是样例代码:

@Override
protected void onInitialzeAccessibilityNodeInfo(AccessibilityNodeInfo info){
//调用父类实现
super.onInitializeAccessibilityNodeInfo(info);
//设置自定义事件
node.addAction(new AccessibilityAction(0x02000000, "菜单1"));
node.addAction(new AccessibilityAction(0x02fffffe, "菜单2"));
}

2、响应自定义操作

添加了自定义操作事件之后,还需要处理用户的自定义操作,这样用户在通过无障碍服务操作这些自定义事件时,才能得到正确的响应结果。重写performAccessibilityAction()方法,在此方法中响应对应的事件ID的操作。如下面样例代码所示:

//返回true表示此方法已经处理完事件,返回false表示事件未处理完
@Override
Protected boolean performAccessibilityAction(int action, Bundle data) {
Switch (action) {
Case 0x02000000: //菜单1的处理,这里简单的弹出提示信息
Toast.makeText(context, “你点击了菜单1”, Toast.LENGTH_SHORT).show();
Return true;
Case 0x02fffffe: //菜单2的点击处理
Toast.makeText(context, “你点击了菜单2”, Toast.LENGTH_SHORT).show();
Return true;
}
Return false;
}

TalkBack朗读自定义提示:

b164ab1f56b4d45294f91ee1aa12fd99.png

TalkBack的自定义操作菜单:

6033a76b5b8028e13c064069a82facfb.png

点击操作菜单的执行结果:

4ae99cb740f7fe34f3e631aa332f744d.png

简单的两步处理就能让你的应用更方便屏幕阅读器用户使用,快看看你的应用中哪里可以使用此技巧吧!花点儿时间应用上此方法,让你的应用更加高大上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 密码

使用mysqladmin,这是前面声明的一个特例。 mysqladmin -u root -p password 新密码 输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。 把命令里的root改为你的用户名,你就可以改你自己的密码了。 当然如果你的…

html5 css登录注册实现,html5+css3实现一款注册表单实例

效果图如下:html源码:复制代码代码如下:个人信息账号:密码:重复密码:邮箱地址:其他信息个人网址:年龄:月薪:10000function showValue(value) {document.getElementById("rangevalue").innerHTMLvalue;}描述:css源码:复制代码代码如…

图解SQL的inner join、left join、right join、full outer join、union、union all的区别

对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过文氏图 Ven…

华南主板超频设置图解_AMD用户不会超频不要紧,开启这个功能免费的性能提升...

现在谈到DIY电脑,基本上大家都会了解到“超频”这个词,超频就是采用人为的方式将CPU、显卡等硬件的工作频率提高,让它们在高于其额定的频率状态下稳定工作。完整的超频必须有两点,提升频率并且稳定,很多时候提升频率容…

凹入表形式打印树形结构_【树形立方体】立方体有哪些特性?

迈安带你走进【迈安带你走进】如上图所示,这是由三个维度构成的一个树形立方体,立方体中包含了满足条件的cell(子立方块)值,这些cell里面包含了要分析的数据,称之为度量值。显而易见,一组三维坐标唯一确定了一个子立方…

小学有学计算机课程,如何进行小学计算机课程有效教学.doc

如何进行小学计算机课程有效教学如何进行小学计算机课程有效教学摘要:计算机课程,作为近年来在基础教育阶段,特别是小学阶段新开设的课程,如何进行有效教学,尽可能的提高课堂教学效果,是众多教师关注的热点…

cs架构用什么语言开发_用Rust语言开发微信小程序

由于stdweb已经好久没有更新了,本人又写了另外一篇:JiaYe:用Rust语言开发微信小程序:wasm-bindgen​zhuanlan.zhihu.comstdweb可以轻松将Rust代码编译为JavaScript和Webassembly字节码,本例中使用asmjs-unknown-emscri…

利用线性代数的方法求斐波那契数列的通项

由于word编辑的公式打出来全是黑的,所以只能贴图咯。下次换个编辑器。转载于:https://www.cnblogs.com/maplewizard/archive/2013/03/10/2952623.html

zookeeper 可视化_大厂,常用,四款,大屏可视化工具

小编最经常的工作是将一些项目的数据从数据库导出,然后分门别类的列到excel表格中,领导看起来眼花缭乱。小编想,要是能以图表可视化展现出来,领导就可以看到项目近几个月的走势,也知道之后要怎么决策了。小编尝试了使用…

shared_ptr智能指针源码剖析

前几天有个人问了我一个问题&#xff1a; 如何将一个智能指针作为函数的返回值传递出来。当时这个问题一下子把我问倒了&#xff0c;后来经人提醒有一个叫shared_ptr的智能指针可以解决这个问题。 将shared_ptr作为函数返回值的代码是这样的&#xff1a; 01#include <tr1…

计算机用户win7修改不,Win7电脑时间改不了的解决方法

在平时的工作中&#xff0c;我们经常会碰到一些问题&#xff0c;其中最常见的就是电脑时间改不了了。其实遇到这个问题很好解决的&#xff0c;但是很多用户都不太懂&#xff0c;为此小编赶紧整理了Win7电脑时间改不了的解决方法来帮助大家&#xff0c;大家赶紧看看吧&#xff0…

win7蓝屏0x000000f4修复_注意:关于近期多数电脑蓝屏的处理和预防方法

近期出现部分用户电脑因win7操作系统服役期结束&#xff0c;更新操作系统补丁导致系统蓝屏&#xff0c;错误代码0X000000F4的现象(如下图所示)&#xff1a;在此提醒&#xff0c;可尝试按照以下方法进行处理并设置。如果还没有出现蓝屏的客户&#xff0c;在系统开机时如出现如下…

用yum安装完mysql后没有mysqld的问题

在Centos中用命令 yum install mysql安装数据库&#xff0c;但装完后运行mysqld启动mysql的时候提示找不到&#xff0c;通过 find / | grep mysqld 也没找到mysqld的目录&#xff0c;后来在Google上搜索下&#xff0c;才知道用yum安装时候mysql也有三个参数的。 yum install my…

python中for和while可以有else_Python 中的for,if-else和while语句

for循环功能for 循环是一种迭代循环机制&#xff0c;迭代即重复相同的逻辑操作&#xff0c;每次的操作都是基于上一次的结果而进行的。并且for循环可以遍历任何序列的项目&#xff0c;如一个列表或者一个字符串语法for 循环的一般格式如下&#xff1a;for in 注释&#xff1a;v…

am335x修改sd卡cd管脚

任务&#xff1a;修改SD卡CD管脚&#xff0c;CD管脚是用来给系统通知SD卡的插入与拔出消息的&#xff0c;tq3358默认用的是 spi0_cs1(GPIO0_6)&#xff0c;现在要改为GPIO1_16 1. 查看原理图核心板原理图 MMC0的SDCD接的是GPIO0_6。 2. 查看 arch\arm\mach-omap2\mux33…

未来计算机论文1500,致未来的自己作文1500字

最了解自己的自己&#xff1a;展信乐&#xff01;此信寄予你&#xff0c;许只是无处发泄无聊的情绪吧&#xff0c;你若收到&#xff0c;必然会懂。不知时隔三年&#xff0c;你是否还能记得&#xff0c;那个多少还有些单纯的我&#xff1f;在过去的三年里&#xff0c;那个冒冒失…

sql server数据库还原方法

把数据库的备份文件放到服务器的任意目录下先&#xff0c; 然后按下面的步骤做。 如何从备份设备还原备份&#xff08;企业管理器&#xff09; 从备份设备还原备份 展开服务器组&#xff0c;然后展开服务器。 展开"数据库"文件夹&#xff0c;右击数据库&#xff0c;指…

cad插件_抖音最火CAD插件教程汇总

左下角阅读原文看CAD视频好课推荐&#xff1a;1、CAD2014&#xff1a;点击查看 2、室内CAD&#xff1a;点击查看 3、CAD2019&#xff1a;点击查看4、CAD2018&#xff1a;点击查看5、Bim教程&#xff1a;点击查看6、室内手绘&#xff1a;点击查看7、CAD三维&#xff1a;点击查看…

在内存中建立文件_磁盘与文件,搞懂它

说一说计算机中的非常重要的两个东西磁盘和文件。搞清楚这两个东西有利于我们理解高级语言中关于I/O流操作的设计。它就像一把大杀器一样&#xff0c;无往而不利。想一想&#xff0c;磁盘作为一个电脑中的硬件设备&#xff0c;操作系统是如何管理磁盘设备的&#xff1f;文件其实…

libxml2交叉编译问题及解决办法

libxml2安装中出现的错误:cannot remove libtoolT: No such file or directory解决方法: 修改configure文件 $ vim configure删除这一行: $RM "$cfgfile" 重新再运行 $ ./configure # ./configure --hostarm-linux --buildi386-linux --targetarm --prefix/u…