スワイプの検出
スワイプの検出は
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; } };
このように、定数で座標を設定し、それに対する範囲の判定をすることで
スワイプのときの動作をすることができる