summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera
diff options
context:
space:
mode:
authorMichael Kolb <kolby@google.com>2013-03-12 10:24:42 -0700
committerMichael Kolb <kolby@google.com>2013-04-01 16:35:44 -0700
commit952c5124e1a2fe35d3803018e8d06f297e0ec123 (patch)
tree9f812ee4bc1a0cbef660eee4acba0051409ffd21 /src/com/android/camera
parenta1665151a65c32b3ab3c4190d24bebf2c22cbbb1 (diff)
downloadandroid_packages_apps_Snap-952c5124e1a2fe35d3803018e8d06f297e0ec123.tar.gz
android_packages_apps_Snap-952c5124e1a2fe35d3803018e8d06f297e0ec123.tar.bz2
android_packages_apps_Snap-952c5124e1a2fe35d3803018e8d06f297e0ec123.zip
Pie design update
Change-Id: Ifb0d50938332bdae50e45523850605d0aafed7fb
Diffstat (limited to 'src/com/android/camera')
-rw-r--r--src/com/android/camera/PreviewGestures.java50
1 files changed, 30 insertions, 20 deletions
diff --git a/src/com/android/camera/PreviewGestures.java b/src/com/android/camera/PreviewGestures.java
index f6b622827..351da0afd 100644
--- a/src/com/android/camera/PreviewGestures.java
+++ b/src/com/android/camera/PreviewGestures.java
@@ -18,7 +18,6 @@ package com.android.camera;
import android.os.Handler;
import android.os.Message;
-import android.util.Log;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
@@ -44,6 +43,12 @@ public class PreviewGestures
private static final int MODE_ZOOM = 2;
private static final int MODE_MODULE = 3;
private static final int MODE_ALL = 4;
+ private static final int MODE_SWIPE = 5;
+
+ public static final int DIR_UP = 0;
+ public static final int DIR_DOWN = 1;
+ public static final int DIR_LEFT = 2;
+ public static final int DIR_RIGHT = 3;
private CameraActivity mActivity;
private SingleTapListener mTapListener;
@@ -61,6 +66,7 @@ public class PreviewGestures
private boolean mZoomOnly;
private int mOrientation;
private int[] mLocation;
+ private SwipeListener mSwipeListener;
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
@@ -76,8 +82,12 @@ public class PreviewGestures
public void onSingleTapUp(View v, int x, int y);
}
+ interface SwipeListener {
+ public void onSwipe(int direction);
+ }
+
public PreviewGestures(CameraActivity ctx, SingleTapListener tapListener,
- ZoomRenderer zoom, PieRenderer pie) {
+ ZoomRenderer zoom, PieRenderer pie, SwipeListener swipe) {
mActivity = ctx;
mTapListener = tapListener;
mPie = pie;
@@ -88,6 +98,7 @@ public class PreviewGestures
mTapTimeout = ViewConfiguration.getTapTimeout();
mEnabled = true;
mLocation = new int[2];
+ mSwipeListener = swipe;
}
public void setRenderOverlay(RenderOverlay overlay) {
@@ -149,6 +160,11 @@ public class PreviewGestures
}
} else if (mMode == MODE_NONE) {
return false;
+ } else if (mMode == MODE_SWIPE) {
+ if (MotionEvent.ACTION_UP == m.getActionMasked()) {
+ mSwipeListener.onSwipe(getSwipeDirection(m));
+ }
+ return true;
} else if (mMode == MODE_PIE) {
if (MotionEvent.ACTION_POINTER_DOWN == m.getActionMasked()) {
sendToPie(makeCancelEvent(m));
@@ -215,18 +231,13 @@ public class PreviewGestures
|| Math.abs(m.getY() - mDown.getY()) > mSlop) {
// moved too far and no timeout yet, no focus or pie
cancelPie();
- if (isSwipe(m, true)) {
+ int dir = getSwipeDirection(m);
+ if (dir == DIR_LEFT) {
mMode = MODE_MODULE;
return mActivity.superDispatchTouchEvent(m);
} else {
cancelActivityTouchHandling(m);
- if (isSwipe(m , false)) {
- mMode = MODE_NONE;
- } else if (!mZoomOnly) {
- mMode = MODE_PIE;
- openPie();
- sendToPie(m);
- }
+ mMode = MODE_NONE;
}
}
}
@@ -246,32 +257,31 @@ public class PreviewGestures
}
// left tests for finger moving right to left
- private boolean isSwipe(MotionEvent m, boolean left) {
+ private int getSwipeDirection(MotionEvent m) {
float dx = 0;
float dy = 0;
switch (mOrientation) {
case 0:
dx = m.getX() - mDown.getX();
- dy = Math.abs(m.getY() - mDown.getY());
+ dy = m.getY() - mDown.getY();
break;
case 90:
dx = - (m.getY() - mDown.getY());
- dy = Math.abs(m.getX() - mDown.getX());
+ dy = m.getX() - mDown.getX();
break;
case 180:
dx = -(m.getX() - mDown.getX());
- dy = Math.abs(m.getY() - mDown.getY());
+ dy = m.getY() - mDown.getY();
break;
case 270:
dx = m.getY() - mDown.getY();
- dy = Math.abs(m.getX() - mDown.getX());
+ dy = m.getX() - mDown.getX();
break;
}
- if (left) {
- return (dx < 0 && dy / -dx < 0.6f);
- } else {
- return (dx > 0 && dy / dx < 0.6f);
- }
+ if (dx < 0 && (Math.abs(dy) / -dx < 2)) return DIR_LEFT;
+ if (dx > 0 && (Math.abs(dy) / dx < 2)) return DIR_RIGHT;
+ if (dy > 0) return DIR_DOWN;
+ return DIR_UP;
}
private boolean isInside(MotionEvent evt, View v) {