スワイプの検出
スワイプの検出は
MotionEventを定義すれば実装できる
まず、定数を宣言
private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200; private GestureDetector mGestureDetector;
次に、onCreate()の中でインスタンス取得
mGestureDetector = new GestureDetector(this, mOnGestureListener);
この
mOnGestureListenerは後で作成
次に、onTouchEvent()の実装
@Override
public boolean onTouchEvent(MotionEvent e){
return mGestureDetector.onTouchEvent(e);
}
そして、スワイプ動作の検出
これは、onFing()の中で処理すればいい
private final SimpleOnGestureListener mOnGestureListener = new SimpleOnGestureListener(){
@Override
public boolean onFing(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY){
try{
if(Math.abs(event1.getY() - event2.getY()) < SWIPE_MAX_OFF_PATH){
return false;
}
if(event1.getX() - event2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY){
Toast.makeText(MainActivity.this, "左スワイプ", Toast.LENGTH_SHORT).show();
}
else if(event2.getX() - event1.getX() > SWIPE_MIN_DISTANCE && Math.abs()velocityX > SWIPE_THRESHOLD_VELOCITY){
Toast.makeText(MainActivity.this, "右スワイプ", Toast.LENGTH_SHORT).show();
}
}catch(Exception e){
//nothing
}
}
return false;
}
};
このように、定数で座標を設定し、それに対する範囲の判定をすることで
スワイプのときの動作をすることができる