diff options
author | Wu-cheng Li <wuchengli@google.com> | 2012-05-22 15:40:10 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-05-22 15:40:10 -0700 |
commit | 0acd2e9e8ed49c1930fe4d60796ef14bc5328e34 (patch) | |
tree | 06b74b3d577449379df2fc3a365c6bad9f44ae27 /src | |
parent | 544ab64c8cf2a5ad70cd4c2f723b04f403989987 (diff) | |
parent | 24c1c15ef83608fd7a023fb5d8755f1747a5fef5 (diff) | |
download | Camera-0acd2e9e8ed49c1930fe4d60796ef14bc5328e34.tar.gz |
Merge "Change camera switch animation to always zoom in." into jb-dev
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/camera/Camera.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/CameraScreenNail.java | 3 | ||||
-rw-r--r-- | src/com/android/camera/SwitchAnimManager.java | 47 | ||||
-rwxr-xr-x | src/com/android/camera/VideoCamera.java | 4 |
4 files changed, 9 insertions, 47 deletions
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java index a92174af..ee6211e6 100644 --- a/src/com/android/camera/Camera.java +++ b/src/com/android/camera/Camera.java @@ -2266,7 +2266,7 @@ public class Camera extends ActivityBase implements FocusManager.Listener, // Start switch camera animation. mCameraDevice.waitForIdle(); // Wait until startPreview finishes. - mCameraScreenNail.animateSwitchCamera(mirror); + mCameraScreenNail.animateSwitchCamera(); } // Preview texture has been copied. Now camera can be released and the diff --git a/src/com/android/camera/CameraScreenNail.java b/src/com/android/camera/CameraScreenNail.java index ed7c8477..bf3deb2f 100644 --- a/src/com/android/camera/CameraScreenNail.java +++ b/src/com/android/camera/CameraScreenNail.java @@ -98,10 +98,9 @@ public class CameraScreenNail extends SurfaceTextureScreenNail { } } - public void animateSwitchCamera(boolean backToFront) { + public void animateSwitchCamera() { synchronized (mLock) { if (mAnimState == ANIM_SWITCH_DARK_PREVIEW) { - mSwitchAnimManager.setSwitchDirection(backToFront); // Do not request render here because camera has been just // started. We do not want to draw black frames. mAnimState = ANIM_SWITCH_WAITING_FIRST_FRAME; diff --git a/src/com/android/camera/SwitchAnimManager.java b/src/com/android/camera/SwitchAnimManager.java index fa5d2584..36da7a8f 100644 --- a/src/com/android/camera/SwitchAnimManager.java +++ b/src/com/android/camera/SwitchAnimManager.java @@ -23,21 +23,14 @@ import com.android.gallery3d.ui.RawTexture; /** * Class to handle the animation when switching between back and front cameras. - * The transition is like from Homescreen to AllApps, where front camera is - * AllApps, and back camera is Homescreen. This is because the back camera is - * positioned on the phone underneath the front camera. - * - * From back-camera to front camera: - * - Back camera zooms-out and fades out; Front camera zooms-out and fades-in. - * - * From front camera to back camera: - * - Front camera zooms-in and fades out; Back camera zooms-in and fades-in. + * The snapshot of the previous camera zooms in and fades out. The preview of + * the new camera zooms in and fades in. */ public class SwitchAnimManager { private static final String TAG = "SwitchAnimManager"; // The amount of change for zooming in and out. - private static final float ZOOM_DELTA_FRONT_CAMERA = 0.5f; - private static final float ZOOM_DELTA_BACK_CAMERA = 0.2f; + private static final float ZOOM_DELTA_PREVIEW = 0.2f; + private static final float ZOOM_DELTA_REVIEW = 0.5f; private static final float ANIMATION_DURATION = 400; // ms public static final float INITIAL_DARKEN_ALPHA = 0.8f; @@ -47,16 +40,10 @@ public class SwitchAnimManager { private float mCenterY; private int mDrawWidth; private int mDrawHeight; - // True if switching from back camera to front camera. False otherwise. - private boolean mBackToFront; public SwitchAnimManager() { } - public void setSwitchDirection(boolean backToFront) { - mBackToFront = backToFront; - } - // x, y, x and h: the rectangle area where the animation takes place. public void startAnimation(int x, int y, int w, int h) { mAnimStartTime = SystemClock.uptimeMillis(); @@ -76,8 +63,8 @@ public class SwitchAnimManager { // Calculate the position and the size of the preview and review. float fraction = timeDiff / ANIMATION_DURATION; - float previewScale = calculatePreviewScale(fraction, mBackToFront); - float reviewScale = calculateReviewScale(fraction, mBackToFront); + float previewScale = 1 - ZOOM_DELTA_PREVIEW * (1 - fraction); + float reviewScale = 1 + ZOOM_DELTA_REVIEW * fraction; float previewWidth = mDrawWidth * previewScale; float previewHeight = mDrawHeight * previewScale; float reviewWidth = mDrawWidth * reviewScale; @@ -100,26 +87,4 @@ public class SwitchAnimManager { canvas.setAlpha(alpha); return true; } - - // Calculate the zoom factor of preview based on the given time fraction. - private float calculatePreviewScale(float fraction, boolean backToFront) { - if (backToFront) { - // Front camera zooms out. - return 1 + ZOOM_DELTA_FRONT_CAMERA * (1 - fraction); - } else { - // Back camera zooms in. - return 1 - ZOOM_DELTA_BACK_CAMERA * (1 - fraction); - } - } - - // Calculate the zoom factor of review based on the given time fraction. - private float calculateReviewScale(float fraction, boolean backToFront) { - if (backToFront) { - // Back camera zooms out. - return 1 - ZOOM_DELTA_BACK_CAMERA * fraction; - } else { - // Front camera zooms in. - return 1 + ZOOM_DELTA_FRONT_CAMERA * fraction; - } - } } diff --git a/src/com/android/camera/VideoCamera.java b/src/com/android/camera/VideoCamera.java index c7bd5cc1..54eba4ea 100755 --- a/src/com/android/camera/VideoCamera.java +++ b/src/com/android/camera/VideoCamera.java @@ -2160,9 +2160,7 @@ public class VideoCamera extends ActivityBase // Start switch camera animation. mCameraDevice.waitForIdle(); // Wait until startPreview finishes. - CameraInfo info = CameraHolder.instance().getCameraInfo()[mCameraId]; - boolean backToFront = (info.facing == CameraInfo.CAMERA_FACING_FRONT); - mCameraScreenNail.animateSwitchCamera(backToFront); + mCameraScreenNail.animateSwitchCamera(); // Enable all camera controls. mSwitchingCamera = false; |