MotionEvent.ACTION_UP无法被响应
来源:互联网 发布:全境封锁ps4网络不好 编辑:程序博客网 时间:2024/05/01 18:12
关于MotionEvent.ACTION_UP无法被响应的问题
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:{
System.out.println("按下");
break;}
case MotionEvent.ACTION_UP:{
System.out.println("释放");
break;}
default:
break;
}
return super.onTouchEvent(event);
// return true;
}这个函数是具有有返回值的,须要返回一个布尔值。大家发现我将return super.onTouchEvent(event)注释掉了而是直接return ture。 我给同学们解释一下为什么要着么操作。onTouchEvent方法不是我们手动调用的而是系统调用的 它的返回值会直接通知系统是否回调方法。如果说在这里return false onTouchEvent方法永远不会在被回调也就是说它只能响应触摸按下操作,触摸移动事件 和触摸抬起事件永远都不会在被响应 ,log只会打印出"ACTION_DOWN"。 如果这里return super.onTouchEvent(event); 调用父类的方法来得到返回值返回 ,这样也是有问题的因为调用父类的onTouchEvent方法可能也会返回false 这样一来依然会无法响应触摸移动事件和触摸抬起事件。所以为了正确的处理触摸事件在这里我们直接return ture 这样一来就万无一失了,Log中会将所有信息都打印出来。
1)public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来分发TouchEvent
2)public boolean onInterceptTouchEvent(MotionEvent ev) 这个方法用来拦截TouchEvent
3)public boolean onTouchEvent(MotionEvent ev) 这个方法用来处理TouchEvent
当TouchEvent发生时,首先Activity将TouchEvent传递给最顶层的View, TouchEvent最先到达最顶层 view 的 dispatchTouchEvent ,然后由 dispatchTouchEvent 方法进行分发,如果dispatchTouchEvent返回true ,则交给这个view的onTouchEvent处理,如果dispatchTouchEvent返回 false ,则交给这个 view 的 interceptTouchEvent 方法来决定是否要拦截这个事件,如果 interceptTouchEvent 返回 true ,也就是拦截掉了,则交给它的 onTouchEvent 来处理,如果 interceptTouchEvent 返回 false ,那么就传递给子 view ,由子 view 的 dispatchTouchEvent 再来开始这个事件的分发。如果事件传递到某一层的子 view 的 onTouchEvent 上了,这个方法返回了 false ,那么这个事件会从这个 view 往上传递,都是 onTouchEvent 来接收。而如果传递到最上面的 onTouchEvent 也返回 false 的话,这个事件就会“消失”,而且接收不到下一次事件。
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:{
System.out.println("按下");
break;}
case MotionEvent.ACTION_UP:{
System.out.println("释放");
break;}
default:
break;
}
return super.onTouchEvent(event);
// return true;
}这个函数是具有有返回值的,须要返回一个布尔值。大家发现我将return super.onTouchEvent(event)注释掉了而是直接return ture。 我给同学们解释一下为什么要着么操作。onTouchEvent方法不是我们手动调用的而是系统调用的 它的返回值会直接通知系统是否回调方法。如果说在这里return false onTouchEvent方法永远不会在被回调也就是说它只能响应触摸按下操作,触摸移动事件 和触摸抬起事件永远都不会在被响应 ,log只会打印出"ACTION_DOWN"。 如果这里return super.onTouchEvent(event); 调用父类的方法来得到返回值返回 ,这样也是有问题的因为调用父类的onTouchEvent方法可能也会返回false 这样一来依然会无法响应触摸移动事件和触摸抬起事件。所以为了正确的处理触摸事件在这里我们直接return ture 这样一来就万无一失了,Log中会将所有信息都打印出来。
1)public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来分发TouchEvent
2)public boolean onInterceptTouchEvent(MotionEvent ev) 这个方法用来拦截TouchEvent
3)public boolean onTouchEvent(MotionEvent ev) 这个方法用来处理TouchEvent
当TouchEvent发生时,首先Activity将TouchEvent传递给最顶层的View, TouchEvent最先到达最顶层 view 的 dispatchTouchEvent ,然后由 dispatchTouchEvent 方法进行分发,如果dispatchTouchEvent返回true ,则交给这个view的onTouchEvent处理,如果dispatchTouchEvent返回 false ,则交给这个 view 的 interceptTouchEvent 方法来决定是否要拦截这个事件,如果 interceptTouchEvent 返回 true ,也就是拦截掉了,则交给它的 onTouchEvent 来处理,如果 interceptTouchEvent 返回 false ,那么就传递给子 view ,由子 view 的 dispatchTouchEvent 再来开始这个事件的分发。如果事件传递到某一层的子 view 的 onTouchEvent 上了,这个方法返回了 false ,那么这个事件会从这个 view 往上传递,都是 onTouchEvent 来接收。而如果传递到最上面的 onTouchEvent 也返回 false 的话,这个事件就会“消失”,而且接收不到下一次事件。
0 0
- MotionEvent.ACTION_UP无法被响应
- (转载) 关于MotionEvent.ACTION_UP无法被响应的问题
- 关于MotionEvent.ACTION_UP无法被响应的问题
- Android onTouchEvent的MotionEvent.ACTION_UP不响应
- Android onTouchEvent的MotionEvent.ACTION_UP不响应
- Android MotionEvent.ACTION_UP和ACTION_CANCEL的区别
- action_up无法使用问题
- Android onTouch 斜滑或者MotionEvent.ACTION_UP 不反应
- 使用OnTouchListener()的一个坑,监听不到MotionEvent.ACTION_UP
- 使用OnTouchListener()的一个坑,监听不到MotionEvent.ACTION_UP
- SurfaceView监听不到MotionEvent.ACTION_MOVE和MotionEvent.ACTION_UP事件的解决办法
- 无法解析 ACTION_UP,或者它不是字段
- Android MotionEvent事件响应机制
- iOS开发——全局响应MotionEvent
- Android中处理view弹起(即MotionEvent.ACTION_UP)事件发生时触摸点是否在该view组件的范围内
- MotionEvent
- MotionEvent
- iOS开发——全局响应MotionEvent(微信摇一摇)
- Java 接口和抽象类区别
- linxu使用的日常
- iOS设计模式(七) 迭代器模式
- 版本管理工具Git使用总结
- mahout之推荐系统源码笔记(2) ---相似度计算之RowSimilarityJob
- MotionEvent.ACTION_UP无法被响应
- 四旋翼飞行器结构和原理
- C#使用WebService和Session
- Java简单工厂模式-创建型
- 月份的研究
- Http状态码大全
- 离线安装cdh
- 如何升级到python3版本并且安装pip3及ipython3
- sysconf()函数应用举例:查看CPU及内存信息