]> git.ktnx.net Git - mobile-ledger.git/commitdiff
class for swiping
authorDamyan Ivanov <dam+mobileledger@ktnx.net>
Fri, 30 Nov 2018 21:03:30 +0000 (21:03 +0000)
committerDamyan Ivanov <dam+mobileledger@ktnx.net>
Fri, 30 Nov 2018 21:03:30 +0000 (21:03 +0000)
app/src/main/java/net/ktnx/mobileledger/OnSwipeTouchListener.java [new file with mode: 0644]

diff --git a/app/src/main/java/net/ktnx/mobileledger/OnSwipeTouchListener.java b/app/src/main/java/net/ktnx/mobileledger/OnSwipeTouchListener.java
new file mode 100644 (file)
index 0000000..b684b83
--- /dev/null
@@ -0,0 +1,73 @@
+package net.ktnx.mobileledger;
+
+import android.content.Context;
+import android.util.Log;
+import android.view.GestureDetector;
+import android.view.GestureDetector.SimpleOnGestureListener;
+import android.view.MotionEvent;
+import android.view.View;
+
+public abstract class OnSwipeTouchListener implements View.OnTouchListener {
+    public final GestureDetector gestureDetector;
+
+    OnSwipeTouchListener(Context ctx) {
+        gestureDetector = new GestureDetector(ctx, new GestureListener() );
+    }
+
+    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) {
+            Log.d("sw-l", "onDown");
+            return false;
+        }
+
+        @Override
+        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
+            boolean result = false;
+
+            Log.d("sw-l", "onFling");
+
+            try {
+                float diffX = e2.getX() - e1.getX();
+                float diffY = e2.getY() - e1.getY();
+                if (Math.abs(diffX) > Math.abs(diffY)) {
+                    if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
+                        if (diffX > 0) {
+                            Log.d("sw-l", "calling onSwipeRight");
+                            onSwipeRight();
+                        }
+                        else {
+                            Log.d("sw-l", "calling onSwipeLeft");
+                            onSwipeLeft();
+                        }
+                    }
+                    result = true;
+                }
+                else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
+                    if (diffY > 0) {
+                        onSwipeDown();
+                    }
+                    else {
+                        onSwipeUp();
+                    }
+                    result = true;
+                }
+            }
+            catch (Exception e) {
+                e.printStackTrace();
+            }
+
+            return result;
+        }
+    }
+
+    public void onSwipeRight() {}
+    public void onSwipeLeft() {
+        Log.d("sw-l", "LEFT");
+    }
+    public void onSwipeUp() {}
+    public void onSwipeDown() {}
+}