Skip to content

Instantly share code, notes, and snippets.

@beiliubei
Forked from showsky/OnSwipeTouchListener.java
Last active April 15, 2019 09:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save beiliubei/6a89b5169fbb45b9fbf7 to your computer and use it in GitHub Desktop.
Save beiliubei/6a89b5169fbb45b9fbf7 to your computer and use it in GitHub Desktop.
package com.cobocn.hdms.app.ui.widget;
/**
* Created by benny on 14-9-19.
*/
import android.content.Context;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
public abstract class OnSwipeTouchListener implements View.OnTouchListener
{
private final GestureDetector gestureDetector;
public OnSwipeTouchListener(Context ctx)
{
gestureDetector = new GestureDetector(ctx, new GestureListener());
}
abstract void onSwipeRight();
abstract void onSwipeLeft();
abstract void onSwipeTop();
abstract void onSwipeBottom();
private final class GestureListener extends GestureDetector.SimpleOnGestureListener
{
private static final int SWIPE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;
@Override
public boolean onDown(MotionEvent e)
{
return true;
}
@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();
}
}
result = true;
}
else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD)
{
if (diffY > 0)
{
onSwipeBottom();
}
else
{
onSwipeTop();
}
}
result = true;
}
catch (Exception exception)
{
exception.printStackTrace();
}
return result;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment