summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWu-cheng Li <wuchengli@google.com>2012-05-11 20:02:27 +0800
committerWu-cheng Li <wuchengli@google.com>2012-05-22 14:00:36 -0700
commit24c1c15ef83608fd7a023fb5d8755f1747a5fef5 (patch)
tree301a03f539f408846f9cc2254b824a3adfa95771 /src
parent7604dd1da3f5c22b478b3004ff9d86c824a045d0 (diff)
downloadCamera-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.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 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;