diff options
author | Wu-cheng Li <wuchengli@google.com> | 2012-05-11 20:02:27 +0800 |
---|---|---|
committer | Wu-cheng Li <wuchengli@google.com> | 2012-05-22 14:00:36 -0700 |
commit | 24c1c15ef83608fd7a023fb5d8755f1747a5fef5 (patch) | |
tree | 301a03f539f408846f9cc2254b824a3adfa95771 /src | |
parent | 7604dd1da3f5c22b478b3004ff9d86c824a045d0 (diff) | |
download | Camera-24c1c15ef83608fd7a023fb5d8755f1747a5fef5.tar.gz |
Change camera switch animation to always zoom in.
bug:5954954
Change-Id: Ie2c2bc0c3c25a63dd0fc4b5f162b2ceff76475da
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 e8a56a73..a5e4a77c 100644 --- a/src/com/android/camera/Camera.java +++ b/src/com/android/camera/Camera.java @@ -2263,7 +2263,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 758c78d2..1b6b29bf 100755 --- a/src/com/android/camera/VideoCamera.java +++ b/src/com/android/camera/VideoCamera.java @@ -2158,9 +2158,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; |