,那么,這個類如何使用呢?以下是使用該類的一個范例:
private GestureDetector mGestureDetector;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGestureDetector = new GestureDetector(this, new MyGestureListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
/* 有關上面的 onTouchEvent方法,我們可以直接判斷MotionEvent的類型,
對于手勢移動僅僅捕獲ACTION_MOVE即可,
我們通過參數MotionEvent e1, MotionEvent e2,float distanceX, float distanceY可以獲取操作變化。
比如 distanceX > 0 向右邊移動,distanceX < 0 則向左邊,distanceY > 0 向上滾動, distanceY < 0 向下滾動。
*/
}
class MyGestureListener extends GestureDetector.SimpleOnGestureListener{
@Override
public boolean onSingleTapUp(MotionEvent ev) {
Log.d("onSingleTapUp",ev.toString());
return true;
}
@Override
public void onShowPress(MotionEvent ev) {
Log.d("onShowPress",ev.toString());
}
@Override
public void onLongPress(MotionEvent ev) {
Log.d("onLongPress",ev.toString());
}
}
更多的回調消息,方便的對用戶的動作進行響應
public interface OnGestureListener {
// Touch down時觸發, e為down時的MotionEvent
boolean onDown(MotionEvent e);
// 在Touch down之后一定時間(115ms)觸發,e為down時的MotionEvent
void onShowPress(MotionEvent e);
// Touch up時觸發,e為up時的MotionEvent
boolean onSingleTapUp(MotionEvent e);
// 滑動時觸發,e1為down時的MotionEvent,e2為move時的MotionEvent
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY);
// 在Touch down之后一定時間(500ms)觸發,e為down時的MotionEvent
void onLongPress(MotionEvent e);
// 滑動一段距離,up時觸發,e1為down時的MotionEvent,e2為up時的MotionEvent
boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY);
}
public interface OnDoubleTapListener {
// 完成一次單擊,并確定沒有二擊事件后觸發(300ms),e為down時的MotionEvent
boolean onSingleTapConfirmed(MotionEvent e);
// 第二次單擊down時觸發,e為第一次down時的MotionEvent
boolean onDoubleTap(MotionEvent e);
// 第二次單擊down,move和up時都觸發,e為不同時機下的MotionEvent
boolean onDoubleTapEvent(MotionEvent e);
}