关于MotionEvent.ACTION_CANCEL带来的滑动问题解决
来源:互联网 发布:r2v32软件 编辑:程序博客网 时间:2024/06/06 12:43
几乎所有的自定义控件都要手动处理onTouchEvent事件,我们知道,onTouchEvent方法返回的布尔值决定了你是否处理(消费当前事件),但是这么笼统的说其实是不准确的.准确来说,是当手指按下,也就是onTouchEvent接收到ACTION_DOWN事件的时候,如果返回true,那么就代表这次事件被我们处理,后来的ACTION_MOVE和ACTION_UP的返回结果是无所谓的. 同样的,如果在ACTION_DOWN的时候我们返回了false,那么后来的事件也不会传到这里.
ACTION_CANCLE事件如何被触发?
从表象来说明就是:当触摸事件从我们的控件开始,也就是ACTION_DOWN被我们返回true处理,然后手指移动到当前控件的外面,这时候就会触发ACTION_CANCLE事件,触发cancle事件就不会接收到up事件!!! 实际上当手指移动到了当前控件之外的时候,这个触摸事件被他的父控件拦截掉了,所以触发了cancle事件.之后的触摸事件就再也不会传递到当前控件的onTouchEvent里面.
ACTION_CANCLE事件如何处理?
关于处理,有两种办法:
1.如果是类似滑动开关,开关随着手指移动,当手指不小心移动到开关外面,我们可以对cancle进行判断,触发cancle的时候,将用户未做完的动作自动执行,也就是自动将开关滑动到左边或者右边.具体逻辑自行处理.如果你觉得这种不太好,那么请看第二种完美的解决方案.
2.类似于自定义progressBar,触发cancle的时候没法进行自动处理.其实我们可以在onTouchEvent里面先调用
requestDisallowInterceptTouchEvent(true);,这句代码的意思就是不允许父控件拦截我们的触摸事件,这样action_canlce事件就永远不会被触发.问题也就不存在了.
- 关于MotionEvent.ACTION_CANCEL带来的滑动问题解决
- Android MotionEvent.ACTION_UP和ACTION_CANCEL的区别
- 安卓-MotionEvent之ACTION_CANCEL
- 安卓-MotionEvent之ACTION_CANCEL
- android MotionEvent.ACTION_CANCEL情景分析
- 关于motionevent的使用
- 关于 MotionEvent 的笔记
- 关于MotionEvent的小知识
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- android中MotionEvent.ACTION_CANCEL事件是什么意思,如何触发
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- Android App中ViewPager所带来的滑动冲突问题解决方法
- [Leetcode] 617. Merge Two Binary Trees
- 2440中的存储管理器
- Android开发--Binder
- KindEditor上传图片
- 点滴知识
- 关于MotionEvent.ACTION_CANCEL带来的滑动问题解决
- 滚动条样式修改 和 placeholder文本框提示字颜色修改
- Android锁屏出现java.lang.RuntimeException: Camera is being used after Camera.release() was called
- Servlet文件下载例子详解及response的contentType类型大全
- 窗体部件效果之滚动字幕
- Ubuntu 14.04下SVN服务器server的搭建和客户端的简单操作
- win10 mysql 5.7免安装版下载及配置教程
- Codeforces Round #424 Div.2 B 【map】
- Python中的交叉分析pivot_table