Android - 手勢左右滑動偵測

摘要: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);
}