public class OnSwipeListener implements View.OnTouchListener { private final GestureDetector gestureDetector; public OnSwipeListener(Context context) { gestureDetector = new GestureDetector(context, new GestureListener()); } @Override public boolean onTouch(View v, MotionEvent event) { return gestureDetector.onTouchEvent(event); } private final class GestureListener extends GestureDetector.SimpleOnGestureListener { private static final int SWIPE_VELOCITY_THRESHOLD = 100; private static final int SWIPE_THRESHOLD = 100; @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { float diffY = e2.getY() - e1.getY(); float diffX = e2.getX() - e1.getX(); if (Math.abs(diffX) > Math.abs(diffY)) { if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { if (diffX > 0) { onSwipeRight(); } else { onSwipeLeft(); } } } else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { if (diffY > 0) { onSwipeBottom(); } else { onSwipeTop(); } } return true; } } public void onSwipeRight() { } public void onSwipeLeft() { } public void onSwipeTop() { } public void onSwipeBottom() { } }
Applied to a view...
view.setOnTouchListener(new OnSwipeListener(context) { public void onSwipeTop() { Log.d("OnSwipeListener", "onSwipeTop"); } public void onSwipeRight() { Log.d("OnSwipeListener", "onSwipeRight"); } public void onSwipeLeft() { Log.d("OnSwipeListener", "onSwipeLeft"); } public void onSwipeBottom() { Log.d("OnSwipeListener", "onSwipeBottom"); } });
public class GestureActivity extends Activity implements GestureDetector.OnDoubleTapListener, GestureDetector.OnGestureListener { private GestureDetector mGestureDetector; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mGestureDetector = new GestureDetector(this, this); mGestureDetector.setOnDoubleTapListener(this); } @Override public boolean onTouchEvent(MotionEvent event){ mGestureDetector.onTouchEvent(event); return super.onTouchEvent(event); } @Override public boolean onDown(MotionEvent event) { Log.d("GestureDetector","onDown"); return true; } @Override public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) { Log.d("GestureDetector","onFling"); return true; } @Override public void onLongPress(MotionEvent event) { Log.d("GestureDetector","onLongPress"); } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Log.d("GestureDetector","onScroll"); return true; } @Override public void onShowPress(MotionEvent event) { Log.d("GestureDetector","onShowPress"); } @Override public boolean onSingleTapUp(MotionEvent event) { Log.d("GestureDetector","onSingleTapUp"); return true; } @Override public boolean onDoubleTap(MotionEvent event) { Log.d("GestureDetector","onDoubleTap"); return true; } @Override public boolean onDoubleTapEvent(MotionEvent event) { Log.d("GestureDetector","onDoubleTapEvent"); return true; } @Override public boolean onSingleTapConfirmed(MotionEvent event) { Log.d("GestureDetector","onSingleTapConfirmed"); return true; } }
Official Documentation: Detecting Common Gestures (opens new window)
Read Articlehttps://develop.horje.com/learn/1434/reference