summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWu-cheng Li <wuchengli@google.com>2012-05-22 15:40:10 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-05-22 15:40:10 -0700
commit0acd2e9e8ed49c1930fe4d60796ef14bc5328e34 (patch)
tree06b74b3d577449379df2fc3a365c6bad9f44ae27 /src
parent544ab64c8cf2a5ad70cd4c2f723b04f403989987 (diff)
parent24c1c15ef83608fd7a023fb5d8755f1747a5fef5 (diff)
downloadCamera-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.java2
-rw-r--r--src/com/android/camera/CameraScreenNail.java3
-rw-r--r--src/com/android/camera/SwitchAnimManager.java47
-rwxr-xr-xsrc/com/android/camera/VideoCamera.java4
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;