您的位置:首页 > 其它

TouchListener/ OnTouchEvent and multiTouch(多点触控)

2016-05-20 17:44 302 查看
基于监听的TouchListener

方法:

onTouch(View v, MotionEvent event):

这里面的参数依次是触发触摸事件的组件(view),触碰事件event 封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。比如event.getX(),event.getY()

也可以对触摸的动作类型进行判断,使用event.getAction( )再进行判断;如:

event.getAction == MotionEvent.ACTION_DOWN:按下事件

event.getAction == MotionEvent.ACTION_MOVE:移动事件

event.getAction == MotionEvent.ACTION_UP:弹起事件

基于回调的onTouchEvent( )

同样是触碰事件,但是onTouchEvent更多的是用于自定义的view,所有的view类中都重写了该方法,而这种触摸事件是基于回调的,也就是说:如果我们返回的值是false的话,那么事件会继续向外传播,由外面的容器或者Activity进行处理!当然还涉及到了手势(Gesture)

multiTouch(多点操作的方法)

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()方法判断当前有多少个手指在触摸)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: