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);