summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMindy Pereira <mindyp@google.com>2013-09-17 17:10:16 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-09-17 17:10:16 -0700
commit3c6ad3cbd3c5d0a7a0c10c125777fc66bac3607c (patch)
tree9a213b44a152419d00d2580c8b4a7883cf1c54e4
parent9c4c15e6061bd3e9bb0cd50ed2245512c85250e4 (diff)
parent7323508df106bf97cb6bd5d9aa480173558d84a3 (diff)
downloadphotoviewer-3c6ad3cbd3c5d0a7a0c10c125777fc66bac3607c.tar.gz
am 7323508d: Don\'t scale on double tap if there is movement before an up event
* commit '7323508df106bf97cb6bd5d9aa480173558d84a3': Don't scale on double tap if there is movement before an up event
-rw-r--r--src/com/android/ex/photo/views/PhotoView.java54
1 files changed, 37 insertions, 17 deletions
diff --git a/src/com/android/ex/photo/views/PhotoView.java b/src/com/android/ex/photo/views/PhotoView.java
index a2e7107..7ba096d 100644
--- a/src/com/android/ex/photo/views/PhotoView.java
+++ b/src/com/android/ex/photo/views/PhotoView.java
@@ -28,6 +28,7 @@ import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
import android.support.v4.view.GestureDetectorCompat;
+import android.support.v4.view.ScaleGestureDetectorCompat;
import android.util.AttributeSet;
import android.view.GestureDetector.OnGestureListener;
import android.view.GestureDetector.OnDoubleTapListener;
@@ -174,6 +175,11 @@ public class PhotoView extends View implements OnGestureListener,
private float mDownFocusX;
private float mDownFocusY;
+ /**
+ * Whether the QuickSale gesture is enabled.
+ */
+ private boolean mQuickScaleEnabled;
+
public PhotoView(Context context) {
super(context);
initialize();
@@ -215,6 +221,9 @@ public class PhotoView extends View implements OnGestureListener,
@Override
public boolean onDoubleTap(MotionEvent e) {
mDoubleTapOccurred = true;
+ if (!mQuickScaleEnabled) {
+ return scale(e);
+ }
return false;
}
@@ -225,28 +234,18 @@ public class PhotoView extends View implements OnGestureListener,
switch (action) {
case MotionEvent.ACTION_DOWN:
- mDownFocusX = e.getX();
- mDownFocusY = e.getY();
+ if (mQuickScaleEnabled) {
+ mDownFocusX = e.getX();
+ mDownFocusY = e.getY();
+ }
break;
case MotionEvent.ACTION_UP:
- if (mDoubleTapToZoomEnabled && mTransformsEnabled && mDoubleTapOccurred) {
- if (!mDoubleTapDebounce) {
- float currentScale = getScale();
- float targetScale = currentScale * DOUBLE_TAP_SCALE_FACTOR;
-
- // Ensure the target scale is within our bounds
- targetScale = Math.max(mMinScale, targetScale);
- targetScale = Math.min(mMaxScale, targetScale);
-
- mScaleRunnable.start(currentScale, targetScale, e.getX(), e.getY());
- }
- mDoubleTapDebounce = false;
+ if (mQuickScaleEnabled) {
+ handled = scale(e);
}
- handled = true;
- mDoubleTapOccurred = false;
break;
case MotionEvent.ACTION_MOVE:
- if (mDoubleTapOccurred) {
+ if (mQuickScaleEnabled && mDoubleTapOccurred) {
final int deltaX = (int) (e.getX() - mDownFocusX);
final int deltaY = (int) (e.getY() - mDownFocusY);
int distance = (deltaX * deltaX) + (deltaY * deltaY);
@@ -260,6 +259,26 @@ public class PhotoView extends View implements OnGestureListener,
return handled;
}
+ private boolean scale(MotionEvent e) {
+ boolean handled = false;
+ if (mDoubleTapToZoomEnabled && mTransformsEnabled && mDoubleTapOccurred) {
+ if (!mDoubleTapDebounce) {
+ float currentScale = getScale();
+ float targetScale = currentScale * DOUBLE_TAP_SCALE_FACTOR;
+
+ // Ensure the target scale is within our bounds
+ targetScale = Math.max(mMinScale, targetScale);
+ targetScale = Math.min(mMaxScale, targetScale);
+
+ mScaleRunnable.start(currentScale, targetScale, e.getX(), e.getY());
+ handled = true;
+ }
+ mDoubleTapDebounce = false;
+ }
+ mDoubleTapOccurred = false;
+ return handled;
+ }
+
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
if (mExternalClickListener != null && !mIsDoubleTouch) {
@@ -987,6 +1006,7 @@ public class PhotoView extends View implements OnGestureListener,
mGestureDetector = new GestureDetectorCompat(context, this, null);
mScaleGetureDetector = new ScaleGestureDetector(context, this);
+ mQuickScaleEnabled = ScaleGestureDetectorCompat.isQuickScaleEnabled(mScaleGetureDetector);
mScaleRunnable = new ScaleRunnable(this);
mTranslateRunnable = new TranslateRunnable(this);
mSnapRunnable = new SnapRunnable(this);