摘要:Android - 手勢左右滑動偵測
因原本維護的為onScroll
但這種做法是,第一個點為ACTION_DOWN,但第二點為目前的位置,但這會產生我還沒移開時,將會偵測到無數的事件,(按下後移到不同的點上都會是事件觸發)
導致QA一滑,結果跑了兩次,很顯然很不直覺,會讓人誤解,所以需改為ACTION_DOWN跟ACTION_UP來事件觸發,
此時要用的是下面這個方法
// 用戶按下觸摸屏、快速移動後鬆開,由1個MotionEvent ACTION_DOWN, 多個ACTION_MOVE, 1個ACTION_UP觸發
@Override
public boolean onFling(MotionEvent e1,MotionEvent e2,float velocityX,float velocityY) {
// 參數解釋:
// e1:第1個ACTION_DOWN MotionEvent
// e2:最後一個ACTION_MOVE MotionEvent
// velocityX:X軸上的移動速度,像素/秒
// velocityY:Y軸上的移動速度,像素/秒
// 觸發條件 :
// X軸的坐標位移大於GESTURE_SCREEN_DISTANCE
if(e1.getX() - e2.getX() > GESTURE_SCREEN_DISTANCE ) {
next();
}else if(e1.getX() - e2.getX() < -GESTURE_SCREEN_DISTANCE ){
prev();
}
return false ;
}
要實作interface
implements OnGestureListener
及建立成員
GestureDetector mGDetector;
設定成員事件方法
mGDetector = new GestureDetector(this, this);
在onTouch事件,順便交給mGDetector
@Override
public boolean onTouchEvent(MotionEvent event) {
return mGDetector.onTouchEvent(event);
}