Android的触摸事件MotionEvent event
2014-09-12 19:41
323 查看
最近想在项目中实现多指操作,可惜android原生的sdk对多指的支持不太好,只能自己写了。下面是我在网上查到的一些关于多指触摸的一些资料。
在android的中,MotionEvent event代表的是一个触摸事件。我们对屏幕的几乎所有操作都会触发该事件,如点击、放开、滑动等。不同的事件在MotionEvent中有不同的id,根据id的不同可以判断触摸事件属于哪个手指。我们还可以根据event.getAction() & MotionEvent.ACTION_MASK的结果来判断是何种事件,是ACTION_DOWN、ACTION_UP还是ACTION_MOVE。下面介绍下我们将使用到的五个操作:
MotionEvent.ACTION_DOWN:在第一个点被按下时触发
MotionEvent.ACTION_UP:当屏幕上唯一的点被放开时触发
MotionEvent.ACTION_POINTER_DOWN:当屏幕上已经有一个点被按住,此时再按下其他点时触发。
MotionEvent.ACTION_POINTER_UP:当屏幕上有多个点被按住,松开其中一个点时触发(即非最后一个点被放开时)。
MotionEvent.ACTION_MOVE:当有点在屏幕上移动时触发。值得注意的是,由于它的灵敏度很高,而我们的手指又不可能完全静止(即使我们感觉不到移动,但其实我们的手指也在不停地抖动),所以实际的情况是,基本上只要有点在屏幕上,此事件就会一直不停地被触发。
举例来讲:当我们放一个食指到屏幕上时,触发ACTION_DOWN事件;再放一个拇指到屏幕上,触发ACTION_POINTER_DOWN事件;此时再把食指或拇指放开,都会触发ACTION_POINTER_UP事件;再放开最后一个手指,触发ACTION_UP事件;而同时在整个过程中,ACTION_MOVE事件会一直不停地被触发。
根据上面这些原理,就可以判断在触摸过程中有多少个手指在屏幕上:
?
假如现在有两个手指在触摸屏上,可通过如下方法分别获得这两个触摸点的位置:
?
上面大体就是多指触摸的基本原理了。要在这个基础之上实现多指触摸,还有很长的路要走。
参考资料:/article/1358591.html
在android的中,MotionEvent event代表的是一个触摸事件。我们对屏幕的几乎所有操作都会触发该事件,如点击、放开、滑动等。不同的事件在MotionEvent中有不同的id,根据id的不同可以判断触摸事件属于哪个手指。我们还可以根据event.getAction() & MotionEvent.ACTION_MASK的结果来判断是何种事件,是ACTION_DOWN、ACTION_UP还是ACTION_MOVE。下面介绍下我们将使用到的五个操作:
MotionEvent.ACTION_DOWN:在第一个点被按下时触发
MotionEvent.ACTION_UP:当屏幕上唯一的点被放开时触发
MotionEvent.ACTION_POINTER_DOWN:当屏幕上已经有一个点被按住,此时再按下其他点时触发。
MotionEvent.ACTION_POINTER_UP:当屏幕上有多个点被按住,松开其中一个点时触发(即非最后一个点被放开时)。
MotionEvent.ACTION_MOVE:当有点在屏幕上移动时触发。值得注意的是,由于它的灵敏度很高,而我们的手指又不可能完全静止(即使我们感觉不到移动,但其实我们的手指也在不停地抖动),所以实际的情况是,基本上只要有点在屏幕上,此事件就会一直不停地被触发。
举例来讲:当我们放一个食指到屏幕上时,触发ACTION_DOWN事件;再放一个拇指到屏幕上,触发ACTION_POINTER_DOWN事件;此时再把食指或拇指放开,都会触发ACTION_POINTER_UP事件;再放开最后一个手指,触发ACTION_UP事件;而同时在整个过程中,ACTION_MOVE事件会一直不停地被触发。
根据上面这些原理,就可以判断在触摸过程中有多少个手指在屏幕上:
?
?
参考资料:/article/1358591.html
相关文章推荐
- Android 笔记 motionEvent 处理触摸事件
- Android中触摸事件MotionEvent的来源
- Android之触摸事件MotionEvent
- 【Android View触摸事件(一)】Android常用触控类分析:MotionEvent 、 ViewConfiguration、VelocityTracker
- android MotionEvent.obtain模拟事件,自动触发
- Android 屏幕触摸事件之诡----dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent,onTouch
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- Android触摸事件onTouchEvent和onInterceptTouchEvent该返回什么?
- 【Android View】Android中View对触摸事件的处理和传递dispatchTouchEvent、onInterceptTouchEvent
- android中MotionEvent.ACTION_CANCEL事件是什么意思,如何触发
- Android中TouchEvent触摸事件机制
- 关于Android自定义View中的onTouchEvent(MotionEvent event)事件监听
- android中MotionEvent.ACTION_CANCEL事件如何被触发?
- Qt for android触摸手势事件QGestureEvent
- Android中TouchEvent触摸事件机制
- Android事件处理之MotionEvent
- 【转】Android笔记:触摸事件的分析与总结----Touch事件分发方法dispatchTouchEvent()源码分析
- Android 编程下 Touch 事件的分发和消费机制Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、onIntercep
- Android MotionEvent事件分发机制源码剖析
- 详细剖析 android onInterceptTouchEvent(MotionEvent event) 和 onTouchEvent(MotionEvent event) 的事件传递机制