OSDN Git Service

Implements double-tap to zoom
authornicolasroard <nicolasroard@google.com>
Wed, 6 Mar 2013 01:09:26 +0000 (17:09 -0800)
committernicolasroard <nicolasroard@google.com>
Wed, 6 Mar 2013 01:09:26 +0000 (17:09 -0800)
Change-Id: I716d847d6320504c963b197f11b0deea1fc338cb

src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
src/com/android/gallery3d/filtershow/imageshow/MasterImage.java

index 1edfd79..f44e6f5 100644 (file)
@@ -81,6 +81,7 @@ public class ImageShow extends View implements OnGestureListener,
     private static int mOriginalTextMargin = 8;
     private static int mOriginalTextSize = 26;
     private static String mOriginalText = "Original";
+    private boolean mZoomIn = false;
 
     protected GeometryMetadata getGeometry() {
         return new GeometryMetadata(getImagePreset().mGeoData);
@@ -603,8 +604,17 @@ public class ImageShow extends View implements OnGestureListener,
 
     @Override
     public boolean onDoubleTap(MotionEvent arg0) {
-        // TODO Auto-generated method stub
-        return false;
+        mZoomIn = !mZoomIn;
+        float scale = 1.0f;
+        if (mZoomIn) {
+            scale = MasterImage.getImage().getMaxScaleFactor();
+        }
+        if (scale != MasterImage.getImage().getScaleFactor()) {
+            MasterImage.getImage().setScaleFactor(scale);
+            MasterImage.getImage().needsUpdateFullResPreview();
+            invalidate();
+        }
+        return true;
     }
 
     @Override
@@ -679,8 +689,8 @@ public class ImageShow extends View implements OnGestureListener,
     public boolean onScale(ScaleGestureDetector detector) {
         float scaleFactor = MasterImage.getImage().getScaleFactor();
         scaleFactor = scaleFactor * detector.getScaleFactor();
-        if (scaleFactor > 2) {
-            scaleFactor = 2;
+        if (scaleFactor > MasterImage.getImage().getMaxScaleFactor()) {
+            scaleFactor = MasterImage.getImage().getMaxScaleFactor();
         }
         if (scaleFactor < 0.5) {
             scaleFactor = 0.5f;
index 209c3bd..6d47c91 100644 (file)
@@ -66,6 +66,7 @@ public class MasterImage implements RenderingRequestCaller {
     private GeometryMetadata mPreviousGeometry = null;
 
     private float mScaleFactor = 1.0f;
+    private float mMaxScaleFactor = 3.0f; // TODO: base this on the current view / image
     private Point mTranslation = new Point();
     private Point mOriginalTranslation = new Point();
 
@@ -491,4 +492,12 @@ public class MasterImage implements RenderingRequestCaller {
     public Bitmap getThumbnailBitmap() {
         return mThumbnailBitmap;
     }
+
+    public float getMaxScaleFactor() {
+        return mMaxScaleFactor;
+    }
+
+    public void setMaxScaleFactor(float maxScaleFactor) {
+        mMaxScaleFactor = maxScaleFactor;
+    }
 }