Camera2: tweak volume key zoom and cleanup

- cleanup unused code
- cleanup codestyle
- add more zoom steps for smother zooming
- show zoom circle indicator during zoom

Change-Id: I5214fc2620a0c5167bfdc8e85f7115966c3b8bcf
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index 4ff17bb..265291d 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -44,7 +44,6 @@
 import android.widget.PopupWindow;
 import android.widget.Toast;
 import android.os.SystemProperties;
-import android.graphics.Canvas;
 
 import com.android.camera.CameraPreference.OnPreferenceChangedListener;
 import com.android.camera.FocusOverlayManager.FocusUI;
@@ -943,22 +942,13 @@
         mFaceView.setFaces(faces);
     }
 
-
-    public boolean onScaleStepResize(boolean direction)
-    {
+    public boolean onScaleStepResize(boolean direction) {
         if(mGestures != null){
             return mGestures.onScaleStepResize(direction);
         }
         return false;
     }
 
-    public void onScaleChangeDraw(Canvas canvas)
-    {
-        if(mGestures != null){
-            mGestures.onScaleChangeDraw(canvas);
-        }
-    }
-
     @Override
     public void onDisplayChanged() {
         Log.d(TAG, "Device flip detected.");
diff --git a/src/com/android/camera/PreviewGestures.java b/src/com/android/camera/PreviewGestures.java
index 9ac78ae..fbbe440 100644
--- a/src/com/android/camera/PreviewGestures.java
+++ b/src/com/android/camera/PreviewGestures.java
@@ -20,7 +20,6 @@
 import android.view.MotionEvent;
 import android.view.ScaleGestureDetector;
 import android.view.View;
-import android.graphics.Canvas;
 
 import com.android.camera.ui.PieRenderer;
 import com.android.camera.ui.RenderOverlay;
@@ -201,19 +200,12 @@
         mZoom.onScaleEnd(detector);
     }
 
-    public boolean onScaleStepResize(boolean direction)
-    {
+    public boolean onScaleStepResize(boolean direction) {
         if(mZoom != null){
             return mZoom.onScaleStepResize(direction);
         }
         return false;
     }
 
-    public void onScaleChangeDraw(Canvas canvas)
-    {
-        if(mZoom != null){
-            mZoom.onScaleChangeDraw(canvas);
-        }
-    }
 }
 
diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java
index cb83c5e..ef2a8c4 100644
--- a/src/com/android/camera/VideoUI.java
+++ b/src/com/android/camera/VideoUI.java
@@ -18,7 +18,6 @@
 
 import android.content.res.Configuration;
 import android.graphics.Bitmap;
-import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Matrix;
 import android.graphics.SurfaceTexture;
@@ -730,21 +729,13 @@
         return mCameraControls.getVisibility() == View.VISIBLE;
     }
 
-    public boolean onScaleStepResize(boolean direction)
-    {
+    public boolean onScaleStepResize(boolean direction) {
         if(mGestures != null){
             return mGestures.onScaleStepResize(direction);
         }
         return false;
     }
 
-    public void onScaleChangeDraw(Canvas canvas)
-    {
-        if(mGestures != null){
-            mGestures.onScaleChangeDraw(canvas);
-        }
-    }
-
     @Override
     public void onDisplayChanged() {
         mCameraControls.checkLayoutFlip();
diff --git a/src/com/android/camera/ui/ZoomRenderer.java b/src/com/android/camera/ui/ZoomRenderer.java
index 29bfafc..9ba059c 100644
--- a/src/com/android/camera/ui/ZoomRenderer.java
+++ b/src/com/android/camera/ui/ZoomRenderer.java
@@ -22,6 +22,7 @@
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.graphics.Rect;
+import android.os.Handler;
 import android.view.ScaleGestureDetector;
 
 import com.android.camera2.R;
@@ -35,6 +36,8 @@
     private int mMinZoom;
     private OnZoomChangedListener mListener;
 
+    private final Handler mHandler = new Handler();
+
     private ScaleGestureDetector mDetector;
     private Paint mPaint;
     private Paint mTextPaint;
@@ -47,8 +50,8 @@
     private int mOuterStroke;
     private int mZoomSig;
     private int mZoomFraction;
+    private boolean mInZoom;
     private Rect mTextBounds;
-    private Canvas mCanvas;
 
     public interface OnZoomChangedListener {
         void onZoomStart();
@@ -110,7 +113,6 @@
 
     @Override
     public void onDraw(Canvas canvas) {
-        mCanvas = canvas;
         mPaint.setStrokeWidth(mInnerStroke);
         canvas.drawCircle(mCenterX, mCenterY, mMinCircle, mPaint);
         canvas.drawCircle(mCenterX, mCenterY, mMaxCircle, mPaint);
@@ -125,13 +127,6 @@
                 mTextPaint);
     }
 
-     public void onScaleChangeDraw(Canvas canvas) {
-        if(mCanvas != null){
-            onDraw(mCanvas);
-        }
-    }
-
-
     @Override
     public boolean onScale(ScaleGestureDetector detector) {
         final float sf = detector.getScaleFactor();
@@ -149,7 +144,7 @@
     public boolean onScaleStepResize(boolean direction) {
         int zoom;
         float circle;
-        float circleStep = (mMaxCircle - mMinCircle)/10;
+        float circleStep = (mMaxCircle - mMinCircle)/18;
         if(direction){
             circle = (int) (mCircleSize + circleStep);
         } else {
@@ -158,14 +153,20 @@
         circle = Math.max(mMinCircle, circle);
         circle = Math.min(mMaxCircle, circle);
         if (mListener != null && (int) circle != mCircleSize
-            && ((mMaxCircle - mMinCircle) != 0)) {
+            && ((mMaxCircle - mMinCircle) > 0)) {
             mCircleSize = (int) circle;
             zoom = mMinZoom + (int) ((mCircleSize - mMinCircle)
                    * (mMaxZoom - mMinZoom) / (mMaxCircle - mMinCircle));
             if (mListener != null) {
-                mListener.onZoomStart();
+                mHandler.removeCallbacks(mOnZoomEnd);
+                if (!mInZoom) {
+                    mInZoom = true;
+                    setVisible(true);
+                    mListener.onZoomStart();
+                    update();
+                }
                 mListener.onZoomValueChanged(zoom);
-                mListener.onZoomEnd();
+                mHandler.postDelayed(mOnZoomEnd, 300);
             }
             return true;
         } else {
@@ -173,6 +174,16 @@
         }
     }
 
+    Runnable mOnZoomEnd = new Runnable() {
+        public void run() {
+            mInZoom = false;
+            setVisible(false);
+            if (mListener != null) {
+                mListener.onZoomEnd();
+            }
+        }
+    };
+
     @Override
     public boolean onScaleBegin(ScaleGestureDetector detector) {
         setVisible(true);