Android
里有两个类
android.view.GestureDetector
android.view.GestureDetector.SimpleOnGestureListener
(另外 android .widget.Gallery 好像是更牛 x 的 OnGestureListener )
1 )
新建一个类继承 SimpleOnGestureListener , HahaGestureDetectorListener
可以实现以下 event 事件。
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 时触发。
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 时触发。
点击一下非常快的(不滑动) Touchup :
onDown->onSingleTapUp->onSingleTapConfirmed
点击一下稍微慢点的(不滑动) Touchup :
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
2 )在 view 的新建一个 GestureDetector 的对象。
构造函数里
gestureDetector = new GestureDetector(new HahaGestureDetectorListener());
然后在 View 的 onTouchEvent 里以下这样用,就可以在刚才 1 )弄的事件里写自己的代码了。
@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
}
android.view.GestureDetector
android.view.GestureDetector.SimpleOnGestureListener
(另外 android .widget.Gallery 好像是更牛 x 的 OnGestureListener )
1 )
新建一个类继承 SimpleOnGestureListener , HahaGestureDetectorListener
可以实现以下 event 事件。
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 时触发。
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 时触发。
点击一下非常快的(不滑动) Touchup :
onDown->onSingleTapUp->onSingleTapConfirmed
点击一下稍微慢点的(不滑动) Touchup :
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
2 )在 view 的新建一个 GestureDetector 的对象。
构造函数里
gestureDetector = new GestureDetector(new HahaGestureDetectorListener());
然后在 View 的 onTouchEvent 里以下这样用,就可以在刚才 1 )弄的事件里写自己的代码了。
@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
}
转载于:https://blog.51cto.com/rzmars/803985