要学好android触控,了解[color=red]MotionEvent[/color]是必要,对所用的MotionEvent常用的API要比较深入的了解。
[b]android.view.MotionEvent[/b]
[color=red]MotionEvent事件对象[/color]
[size=medium][b]一般我们是在View的onTouchEvent方法中处理MotionEvent对象的。[/b][/size]
[b]public boolean onTouchEvent(MotionEvent event)[/b]
在这里我们需要从一个MotionEvent对象中获得哪些信息呢?
[size=medium][b](1)首先应该是事件的类型吧?[/b][/size]
可以通过[color=red]event.getAction()[/color],在android2.2之后加入多点触控支持之后使用getActionMasked()方法.
这两个方法的区别见后文.
主要的事件类型有四种:
[b]ACTION_DOWN: 表示用户开始触摸.[/b]
[b]ACTION_MOVE: 表示用户在移动(手指或者其他)[/b]
[b]ACTION_UP:表示用户抬起了手指[/b]
[b]ACTION_CANCEL:表示手势被取消了,一些关于这个事件类型的讨论[/b]
还有一个不常见的:
[b]ACTION_OUTSIDE: 表示用户触碰超出了正常的UI边界.[/b]
但是对于多点触控的支持,Android加入了以下一些事件类型。来处理,如另外有手指按下了,
有的手指抬起来了。等等:
ACTION_POINTER_DOWN:有一个非主要的手指按下了.
ACTION_POINTER_UP:一个非主要的手指抬起来了
(2)事件发生的位置,x,y轴
[b]getX() 获得事件发生时,触摸的中间区域在屏幕的X轴。[/b]
[b]getY() 获得事件发生时,触摸的中间区域在屏幕的Y轴。[/b]
在多点触控中还可以通过:
getX(int pointerIndex) ,来获得对应手指事件的发生位置. 获得Y轴用getY(int pointerIndex)
(3)其他属性
getEdgeFlags():当事件类型是ActionDown时可以通过此方法获得,手指触控开始的边界. 如果是的话,有如下几种值:EDGE_LEFT,EDGE_TOP,EDGE_RIGHT,EDGE_BOTTOM
[b]android.view.MotionEvent[/b]
[color=red]MotionEvent事件对象[/color]
[size=medium][b]一般我们是在View的onTouchEvent方法中处理MotionEvent对象的。[/b][/size]
[b]public boolean onTouchEvent(MotionEvent event)[/b]
在这里我们需要从一个MotionEvent对象中获得哪些信息呢?
[size=medium][b](1)首先应该是事件的类型吧?[/b][/size]
可以通过[color=red]event.getAction()[/color],在android2.2之后加入多点触控支持之后使用getActionMasked()方法.
这两个方法的区别见后文.
主要的事件类型有四种:
[b]ACTION_DOWN: 表示用户开始触摸.[/b]
[b]ACTION_MOVE: 表示用户在移动(手指或者其他)[/b]
[b]ACTION_UP:表示用户抬起了手指[/b]
[b]ACTION_CANCEL:表示手势被取消了,一些关于这个事件类型的讨论[/b]
还有一个不常见的:
[b]ACTION_OUTSIDE: 表示用户触碰超出了正常的UI边界.[/b]
但是对于多点触控的支持,Android加入了以下一些事件类型。来处理,如另外有手指按下了,
有的手指抬起来了。等等:
ACTION_POINTER_DOWN:有一个非主要的手指按下了.
ACTION_POINTER_UP:一个非主要的手指抬起来了
(2)事件发生的位置,x,y轴
[b]getX() 获得事件发生时,触摸的中间区域在屏幕的X轴。[/b]
[b]getY() 获得事件发生时,触摸的中间区域在屏幕的Y轴。[/b]
在多点触控中还可以通过:
getX(int pointerIndex) ,来获得对应手指事件的发生位置. 获得Y轴用getY(int pointerIndex)
(3)其他属性
getEdgeFlags():当事件类型是ActionDown时可以通过此方法获得,手指触控开始的边界. 如果是的话,有如下几种值:EDGE_LEFT,EDGE_TOP,EDGE_RIGHT,EDGE_BOTTOM