这里不讨论 onTouchEven 等情况
在复杂的手势下,可以继承GestureDetector (Gesture 手势 Detector 识别)下的SimpleOnGestureListner这个类,只接受我们想要判断的手势,比如onDoubleTap(双击)、onSingleTapUp(点击)等等,然后相应的执行我们的逻辑。
class MyGesture extends GestureDetector.SimpleOnGestureListener {//单手指操作
@Override //双击
public boolean onDoubleTap(MotionEvent e) {
System.out.println("--onDoubleTap---");
return true;
}
@Override //单击
public boolean onSingleTapUp(MotionEvent e) {
System.out.println("--onSingleTapUp---");
return true;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
System.out.println("--onDoubleTapEvent---");
return super.onDoubleTapEvent(e);
}
}
参考:
按下(onDown): 刚刚手指接触到触摸屏的那一刹那,就是触的那一下。
抛掷(onFling): 手指在触摸屏上迅速移动,并松开的动作。
长按(onLongPress): 手指按在持续一段时间,并且没有松开。
滚动(onScroll): 手指在触摸屏上滑动。
按住(onShowPress): 手指按在触摸屏上,它的时间范围在按下起效,在长按之前。
抬起(onSingleTapUp):手指离开触摸屏的那一刹那。
参考:
1. 点击屏幕上的某项的执行流程 有两种情况,一种是时间很短,一种时间稍长
时间很短:onDown--------》onSingleTapUp--------》onSingleTapConfirmed
时间稍长:onDown--------》onShowPress------》onSingleTapUp--------》onSingleTapConfirmed
2. 长按事件
onDown--------》onShowPress------》onLongPress
3.抛:手指触动屏幕后,稍微滑动后立即松开
onDown-----》onScroll----》onScroll----》onScroll----》………----->onFling
4.拖动
onDown------》onScroll----》onScroll------》onFiling
注意:有的时候会触发onFiling,但是有的时候不会触发,个人理解是人的动作不标准所致。
借鉴这里:
http://blog.csdn.net/xiezhenxiang/article/details/6659506