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,一经查实,立即删除!

相关文章

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里面包含了要分析的数据,称之为度量值。显而易见,一组三维坐标唯一确定了一个子立方…

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表格中,领导看起来眼花缭乱。小编想,要是能以图表可视化展现出来,领导就可以看到项目近几个月的走势,也知道之后要怎么决策了。小编尝试了使用…

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

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

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

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

am335x修改sd卡cd管脚

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

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

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

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

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

平板电脑应用_什么是机房巡检AI机器人?工业平板电脑的应用如何体现

机房巡检AI机器人,顾名思义,它的主要工作是在机房里做巡逻检查,是巡检机器人类别下的一个型号,类似的还有电站巡检AI机器人,铁路巡检AI机器人等,总之,它们的设计研发就是为了某个特定的工作环境…

二叉树的深度_十七:二叉树的最小深度

二叉树的最小深度:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最短路径的长度为树的最小深度。算法一/** * description 二叉树最小深度 * param {*} root 二叉树 */function binaryTreeMinDepth(root) { // 节点不存在时返回长度…

苹果怎么付费购买内存_【苹果手机多长时间清理一次内存,怎么清理?】

一、微信缓存微信作为每天使用频率最多的软件,是需要重点清理的对象。操作:我—设置—通用—清理微信存储空间—查看微信存储空间,选择联系人进行清理。二、短信现在很少有人会用短信联系,一般都是一些垃圾广告,我们可…

发票管理软件_财务人员都在用的这款发票管理软件,真的值得购买么?

(1)电子凭证和纸质会计凭证具有同等效力;(2)报销管理也需要经办、审核、审批流程,且能防止重复入账;(3)以电子凭证纸质版入账留档保存的,必须同时保存电子档。以及重复繁琐的发票查验工作,把最近处于风口浪尖的电子发票…

自动点击器如何设置最快_铁粉技巧 | iPhone如何设置自动开关机,iPhone更改字体...

大家好我是小雷没有废话直奔主题今天让我们看下iPhone如何设置自动开关机首先需要了解的是,iPhone设备是不能设置自动开机的。那么如何每天自动关机呢?1,打开时钟点击计时器。2,点击计时结束时启动3,滑动页面点击停止播…

python contains类似函数_五步教会你用python爬虫神器PyQuery!(内含详细步骤和代码)...

前言:今天为大家带来的内容,是五步教会你用python爬虫神器PyQuery!(内含详细步骤和代码),在这里还是要啰嗦下,为了有更好的观赏性,大部分代码用图片的方式呈现出来!喜欢的话不忘点赞关注不迷路哦…

uniapp开发实例github_跨端开发痛点?送你一款Vue最流行的跨端框架——uni-app

前言今天来聊一下前端必备技能——小程序开发。从最早发布的微信小程序,到后来的支付宝小程序、字节跳动小程序、百度小程序、QQ小程序,还有最近发布的360小程序,面对这么多套的代码,开发者该如何开发呢?当业务要求同时…

计算机怎么把单元格内容水平居中,win10系统下怎样让Word中的表格内容居中

Word是我们经常会使用到的一款文字处理软件,其具有非常强大的功能。那么,我们应该怎样使Word中的表格内容居中呢?接下来,小编就以 windows10正式版系统 为例,给大家分享具体操作方法。具体如下:1、首先在Word软件中准备…