diff options
author | Su Liu <suliu@codeaurora.org> | 2013-09-04 18:16:50 +0800 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2013-10-18 15:54:50 -0700 |
commit | 9691d548876acefdba284c56e9497a7f39d707dd (patch) | |
tree | 1f2886a47f538b57a0cd4ed22f45034bbcc508bb | |
parent | 4a1837d209f6d4e6419bf7a1f67be4c530a70fb8 (diff) | |
download | android_packages_apps_Gallery2-next.tar.gz android_packages_apps_Gallery2-next.tar.bz2 android_packages_apps_Gallery2-next.zip |
Camera: Change volume hard key button to zoom functionnext
Able to capture image through volume hard key
button in camera application, change the function
to zoom function.
Change-Id: Iab9fc2492b2e2ff89cd58c21bac2f147f47b77e2
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 17 | ||||
-rw-r--r-- | src/com/android/camera/PhotoUI.java | 17 | ||||
-rw-r--r-- | src/com/android/camera/PreviewGestures.java | 16 | ||||
-rw-r--r-- | src/com/android/camera/ui/ZoomRenderer.java | 36 |
4 files changed, 80 insertions, 6 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index cbfc385b2..0ab6bd596 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -1633,7 +1633,17 @@ public class PhotoModule public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP: + if (mActivity.isInCameraApp() && mFirstTimeInitialized + && (mUI.mMenuInitialized)) { + mUI.onScaleStepResize(true); + } + return true; case KeyEvent.KEYCODE_VOLUME_DOWN: + if (mActivity.isInCameraApp() && mFirstTimeInitialized + && (mUI.mMenuInitialized)) { + mUI.onScaleStepResize(false); + } + return true; case KeyEvent.KEYCODE_FOCUS: if (mActivity.isInCameraApp() && mFirstTimeInitialized && mShutterButton.getVisibility() == View.VISIBLE) { @@ -1671,12 +1681,7 @@ public class PhotoModule switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP: case KeyEvent.KEYCODE_VOLUME_DOWN: - if (mActivity.isInCameraApp() && mFirstTimeInitialized && - mShutterButton.getVisibility() == View.VISIBLE) { - onShutterButtonClick(); - return true; - } - return false; + return true; case KeyEvent.KEYCODE_FOCUS: if (mFirstTimeInitialized) { onShutterButtonFocus(false); diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java index dddf56292..42907274b 100644 --- a/src/com/android/camera/PhotoUI.java +++ b/src/com/android/camera/PhotoUI.java @@ -32,6 +32,7 @@ import android.view.ViewStub; import android.widget.FrameLayout; import android.widget.FrameLayout.LayoutParams; import android.widget.Toast; +import android.graphics.Canvas; import com.android.camera.CameraPreference.OnPreferenceChangedListener; import com.android.camera.FocusOverlayManager.FocusUI; @@ -692,6 +693,22 @@ public class PhotoUI implements PieListener, mFaceView.setFaces(faces); } + + 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 onSwipe(int direction) { if (direction == PreviewGestures.DIR_UP) { diff --git a/src/com/android/camera/PreviewGestures.java b/src/com/android/camera/PreviewGestures.java index 0b80ff688..3d27e5166 100644 --- a/src/com/android/camera/PreviewGestures.java +++ b/src/com/android/camera/PreviewGestures.java @@ -22,6 +22,7 @@ import android.view.MotionEvent; import android.view.ScaleGestureDetector; import android.view.View; import android.view.ViewConfiguration; +import android.graphics.Canvas; import com.android.camera.ui.PieRenderer; import com.android.camera.ui.RenderOverlay; @@ -385,4 +386,19 @@ public class PreviewGestures mZoom.onScaleEnd(detector); } } + + 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/ui/ZoomRenderer.java b/src/com/android/camera/ui/ZoomRenderer.java index 86b82b459..386f2a387 100644 --- a/src/com/android/camera/ui/ZoomRenderer.java +++ b/src/com/android/camera/ui/ZoomRenderer.java @@ -48,6 +48,7 @@ public class ZoomRenderer extends OverlayRenderer private int mZoomSig; private int mZoomFraction; private Rect mTextBounds; + private Canvas mCanvas; public interface OnZoomChangedListener { void onZoomStart(); @@ -109,6 +110,7 @@ public class ZoomRenderer extends OverlayRenderer @Override public void onDraw(Canvas canvas) { + mCanvas = canvas; mPaint.setStrokeWidth(mInnerStroke); canvas.drawCircle(mCenterX, mCenterY, mMinCircle, mPaint); canvas.drawCircle(mCenterX, mCenterY, mMaxCircle, mPaint); @@ -123,6 +125,13 @@ public class ZoomRenderer extends OverlayRenderer mTextPaint); } + public void onScaleChangeDraw(Canvas canvas) { + if(mCanvas != null){ + onDraw(mCanvas); + } + } + + @Override public boolean onScale(ScaleGestureDetector detector) { final float sf = detector.getScaleFactor(); @@ -137,6 +146,33 @@ public class ZoomRenderer extends OverlayRenderer return true; } + public boolean onScaleStepResize(boolean direction) { + int zoom; + float circle; + float circleStep = (mMaxCircle - mMinCircle)/10; + if(direction){ + circle = (int) (mCircleSize + circleStep); + } else { + circle = (int) (mCircleSize - circleStep); + } + circle = Math.max(mMinCircle, circle); + circle = Math.min(mMaxCircle, circle); + if (mListener != null && (int) circle != mCircleSize + && ((mMaxCircle - mMinCircle) != 0)) { + mCircleSize = (int) circle; + zoom = mMinZoom + (int) ((mCircleSize - mMinCircle) + * (mMaxZoom - mMinZoom) / (mMaxCircle - mMinCircle)); + if (mListener != null) { + mListener.onZoomStart(); + mListener.onZoomValueChanged(zoom); + mListener.onZoomEnd(); + } + return true; + } else { + return false; + } + } + @Override public boolean onScaleBegin(ScaleGestureDetector detector) { setVisible(true); |