手势,其实是指用户手指或触摸笔在触摸屏上的连续触碰行为,比如,在屏幕上从左到右划出的一个动作,就是手势。再比如在屏幕上画出一个圆圈也是手势。
手势这种连续的触碰会形成某个方向上的移动趋势,也会形成一个不规则的几何图形,android提供了手势检测,并为两种手势行为都提供了支持:
对于第一种,android提供了手势检测,并为手势检测提供了相应的监听器。
对于第二种,Android允许开发者添加手势,并提供了相应的API识别用户手势
GestureDetector.OnGestureListener
1.GestureDetector类:
Android为手势检测提供了一个GestureDetector类,GestureDetector实例代表了一个手势检测器,创建GestureDetector时需要传入一个GestureDetector.OnGestureListener 实例。
GestureDetector.OnGestureListener就是一个监听器,负责对用户手势提供相应。
GestureDetector.OnGestureListener中包含的事件处理方法:
- boolean onDoubleTap(MotionEvent e)
解释:双击的第二下Touch down时触发 - boolean onDoubleTapEvent(MotionEvent e)
解释:双击的第二下Touch down和up都会触发,可用e.getAction()区分。 - boolean onDown(MotionEvent e)
解释:Touch down时触发 - boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
解释:Touch了滑动一点距离后,up时触发。velocityX,是在x轴上滑动的速度。 - void onLongPress(MotionEvent e)
解释:Touch了不移动一直Touch down时触发 - boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
解释:Touch了滑动时触发。 void onShowPress(MotionEvent e)
解释:Touch了还没有滑动时触发
(与onDown,onLongPress比较
onDown只要Touch down一定立刻触发。
而Touchdown后过一会没有滑动先触发onShowPress再是onLongPress。
所以Touchdown后一直不滑动,onDown->onShowPress->onLongPress这个顺序触发。boolean onSingleTapConfirmed(MotionEvent e)
boolean onSingleTapUp(MotionEvent e)
解释:上面这两个函数都是在touch down后又没有滑动(onScroll),又没有长按(onLongPress),然后Touchup时触发。点击一下非常