多点触碰
原理
所谓的多点触碰就是多个手指在屏幕上进行操作,用的最多的估计是放大缩功能吧,比如很多的图片浏览器都支持缩放!理论上Android系统本身可以处理多达256个手指的触摸,当然这取决于手机硬件的支持;不过支持多点触摸的手机一般支持2-4个点,当然有些更多!我们发现前面两点都有用到MotionEvent,MotionEvent代表的是一个触摸事件;前我们可以根据event.getAction() & MotionEvent.ACTION_MASK来判断是哪种操作,除了上面介绍的三种单点操作外,还有两个多点专用的操作:
- MotionEvent.ACTION_POINTER_DOWN:当屏幕上已经有一个点被按住,此时再按下其他点时触发。
- MotionEvent.ACTION_POINTER_UP:当屏幕上有多个点被按住,松开其中一个点时触发(即非最后一个点被放开时)。
简单的流程大概是这样:
- 当我们一个手指触摸屏幕 ——> 触发ACTION_DOWN事件
- 接着有另一个手指也触摸屏幕 ——> 触发ACTION_POINTER_DOWN事件,如果还有其他手指触摸,继续触发
- 有一个手指离开屏幕 ——> 触发ACTION_POINTER_UP事件,继续有手指离开,继续触发
- 当最后一个手指离开屏幕 ——> 触发ACTION_UP事件
- 而且在整个过程中,ACTION_MOVE事件会一直不停地被触发
我们可以通过event.getX(int)或者event.getY(int)来获得不同触摸点的位置: 比如event.getX(0)可以获得第一个接触点的X坐标,event.getX(1)获得第二个接触点的X坐标这样... 另外,我们还可以在调用MotionEvent对象的getPointerCount()方法判断当前有多少个手指在触摸~