package com.openfarmanager.android.view; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; /** * author: Vlad Namashko */ public class OnSwipeTouchListener implements RecyclerView.OnItemTouchListener { private GestureDetector mGestureDetector; public OnSwipeTouchListener(Context context) { mGestureDetector = new GestureDetector(context, new GestureListener()); } // public boolean onTouch(final View view, final MotionEvent motionEvent) { // System.out.println(":::::: " + motionEvent.toString()); // return mGestureDetector.onTouchEvent(motionEvent); // } @Override public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { return mGestureDetector.onTouchEvent(e); } @Override public void onTouchEvent(RecyclerView rv, MotionEvent e) { } @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { } private final class GestureListener extends SimpleOnGestureListener { private static final int SWIPE_THRESHOLD = 100; private static final int SWIPE_VELOCITY_THRESHOLD = 100; @Override public boolean onDown(MotionEvent e) { onTouch(); return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { boolean result = false; try { 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(); } } } } catch (Exception exception) { exception.printStackTrace(); } return result; } } public void onTouch() { } public void onSwipeRight() { } public void onSwipeLeft() { } public void onSwipeTop() { } public void onSwipeBottom() { } }