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朗读自定义提示:
TalkBack的自定义操作菜单:
点击操作菜单的执行结果:
简单的两步处理就能让你的应用更方便屏幕阅读器用户使用,快看看你的应用中哪里可以使用此技巧吧!花点儿时间应用上此方法,让你的应用更加高大上。
view类不响应自定义消息_安卓平台如何给控件添加自定义操作?相关推荐
- 安卓listview item内部控件操作方法
自定义listview使用司空见惯,很多时候需要对listview中某一行的内部控件进行操作,加载动画等.本文就如何获取内部空间进行操作简述一下方法. 第一种方法,通过listview的getchil ...
- Winform中怎样在工具类中对窗体中多个控件进行操作(赋值)
场景 需求是在窗体加载完成后掉用工具类的方法,工具类中获取窗体的多个控件对象进行赋值. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 ...
- ViewPager的使用及获取子view控件的操作(inflate)
Step 1: 布局文件中添加viewpager和切换页面button <span style="font-size:18px;"><RelativeLayout ...
- 覆盖5大主流开发平台的报表控件,它值得你一看
为什么大家现在都在使用第三方报表工具呢? 第三方报表工具是数据库存储,数据库程序通常可以存放的数据量是相当大的,可以处理非常复杂的数据结构关系,报表数据交互速度也非常快.不仅能够提高开发效率,还能实现 ...
- SNF开发平台WinForm-Grid表格控件大全
我们在开发系统时,会有很多种控件进行展示,甚至有一些为了方便的一些特殊需求. 那么下面就介绍一些我们在表格控件里常用的方便的控件: 1.Grid表格查询条 Grid表格下拉 3.Grid表格弹框选 ...
- 银弹谷DevSuite零代码开发平台普通窗体控件描述
零代码开发平台普通窗体控件描述 1.字段控件 2.业务控件 3.通用控件
- AndroidStudio_安卓原生开发_精美自定义多选控件_多选Spinner_MultiSpinner_拿来即用---Android原生开发工作笔记144
1.首先去定义该控件:MPopListView package com.maddox.mmrrr1;import android.app.AlertDialog; import android.con ...
- 安卓java代码写控件_安卓自定义流程进度图控件实例代码
先上效果图: 如图,可实现设置:总流程数.已完进度程数.已完成颜色,各个标题 使用方法 1.导入compile 'com.github.pavlospt:circleview:1.3'依赖包(因为用到 ...
- 微信小程序view动态长度_微信小程序 关于控件尺寸动态计算的问题
自定义相机界面,顶部80rpx,底部210rpx,中间剩余高度填充相机视频流view. 实现思路是获取屏幕高度,减去顶部80rpx再减去底部210rpx,结果赋值给相机视频流view的高度.这个高度需 ...
最新文章
- 每天2小时,吃透 985博士总结的这套保姆级TensorFlow + PyTorch笔记(20G高清/PPT/代码)...
- 如何通过人工智能“避开”内容安全的“坑”?
- linux中facl有什么作用,在Linux中使用setfacl后权限被拒绝
- python关闭浏览器删除session_Django操作session 的方法
- 程序员九重镜界,很老的今天刚刚翻出来
- java单元格合并多列_ElementUI表格列相同值自动合并单元格( 多列 )
- c语言锐龙,AMD官方:锐龙5000抗热可以达到95°C 没问题!
- android 中自定义键盘,【图片】自定义属于自己的专属键盘的思路!!!(需要有android编程基础)【exagear吧】_百度贴吧...
- ubuntu安装python_常用linux指令 ubuntu环境pytorch配置
- mysql的时间在cmd的输入格式_获取“System.FormatException:输入字符串的格式不正确。”在日期时间对象插入到MySql数据库...
- 年中618会声会影好礼送不停!
- openai-gpt_GPT-3 101:简介
- ad如何设置pcb板子形状_板子的造型_ad09在做PCB时如何设计板子的形状啊_彩妆阁...
- 第三方验收测试-功能测试方案
- 雷达动画在地图显示_本周在我们的雷达上:RebeccaPurple,动画等!
- 锅圈食汇:火锅食材超市先行者 正离“火锅“越来越远
- 斗牛java主程序设计_Java swing中制作斗牛游戏如何牛点
- 头歌-信息安全技术-Linux之用户管理
- 实战linux内核精简
- 浅谈Asterisk的呼叫转接功能