summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/view
diff options
context:
space:
mode:
authorTom Hennen <TomHennen@users.noreply.github.com>2016-04-02 14:54:16 -0400
committerTom Hennen <TomHennen@users.noreply.github.com>2016-04-02 14:54:16 -0400
commit90ae1d1b716ae46b39a493d7136580b4b671a380 (patch)
treec10891c82627f9907d2dd99ce6626e2cf1f0d14e /app/src/main/java/de/danoeh/antennapod/view
parent5f798852b7ed6894e5c4744630f0372ade106543 (diff)
parentb3c41ce9c7b265b3d8b20a24b1a14fa12dc3d2cf (diff)
downloadAntennaPod-90ae1d1b716ae46b39a493d7136580b4b671a380.zip
Merge pull request #1828 from mfietz/feature/662-episode-swipe
Episode view: Go to previous/next list item when swiping right/left
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/view')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/OnSwipeGesture.java9
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/SwipeGestureDetector.java44
2 files changed, 53 insertions, 0 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/view/OnSwipeGesture.java b/app/src/main/java/de/danoeh/antennapod/view/OnSwipeGesture.java
new file mode 100644
index 000000000..eb72a7135
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/view/OnSwipeGesture.java
@@ -0,0 +1,9 @@
+package de.danoeh.antennapod.view;
+
+public interface OnSwipeGesture {
+
+ boolean onSwipeLeftToRight();
+
+ boolean onSwipeRightToLeft();
+
+}
diff --git a/app/src/main/java/de/danoeh/antennapod/view/SwipeGestureDetector.java b/app/src/main/java/de/danoeh/antennapod/view/SwipeGestureDetector.java
new file mode 100644
index 000000000..f4ee092df
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/view/SwipeGestureDetector.java
@@ -0,0 +1,44 @@
+package de.danoeh.antennapod.view;
+
+import android.util.Log;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+
+public class SwipeGestureDetector extends GestureDetector.SimpleOnGestureListener {
+
+ private static final String TAG = "SwipeGestureDetector";
+
+ 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 final OnSwipeGesture callback;
+
+ public SwipeGestureDetector(OnSwipeGesture callback) {
+ this.callback = callback;
+ }
+
+ @Override
+ public boolean onDown(MotionEvent e) {
+ return true;
+ }
+
+ @Override
+ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
+ try {
+ if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
+ return false;
+ if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
+ && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
+ return callback.onSwipeRightToLeft();
+ } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
+ && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
+ return callback.onSwipeLeftToRight();
+ }
+ } catch (Exception e) {
+ Log.d(TAG, Log.getStackTraceString(e));
+ }
+ return false;
+ }
+
+}