summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-05-17 13:18:09 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-05-17 13:18:09 -0700
commit10fe3fc19d185f0160dcd85c38a6155c979a9d5c (patch)
treed925c1fc5cea73e4e9d05c9ac9679588f93548bd /src/com/android/camera
parent584aa9b015429bf7346fd44b5252c7ece98e675f (diff)
parent377456cde5b0c385ea6635a989df68b6f84cc6cb (diff)
downloadandroid_packages_apps_Snap-10fe3fc19d185f0160dcd85c38a6155c979a9d5c.tar.gz
android_packages_apps_Snap-10fe3fc19d185f0160dcd85c38a6155c979a9d5c.tar.bz2
android_packages_apps_Snap-10fe3fc19d185f0160dcd85c38a6155c979a9d5c.zip
Merge "SnapdragonCamera: Support rotation for image review layout" into camera.lnx.1.0-dev.1.0
Diffstat (limited to 'src/com/android/camera')
-rw-r--r--src/com/android/camera/PhotoUI.java4
-rw-r--r--src/com/android/camera/ui/CameraControls.java28
-rw-r--r--src/com/android/camera/ui/ModuleSwitcher.java2
-rw-r--r--src/com/android/camera/ui/RotateImageView.java32
4 files changed, 54 insertions, 12 deletions
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index 312615492..c736cbc7d 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -1403,6 +1403,10 @@ public class PhotoUI implements PieListener,
if (mZoomRenderer != null) {
mZoomRenderer.setOrientation(orientation);
}
+ if (mReviewImage != null) {
+ RotateImageView v = (RotateImageView) mReviewImage;
+ v.setOrientation(orientation, animation);
+ }
}
public void tryToCloseSubList() {
diff --git a/src/com/android/camera/ui/CameraControls.java b/src/com/android/camera/ui/CameraControls.java
index 989568953..9f2a5ebb8 100644
--- a/src/com/android/camera/ui/CameraControls.java
+++ b/src/com/android/camera/ui/CameraControls.java
@@ -61,6 +61,9 @@ public class CameraControls extends RotatableLayout {
private View mPreview;
private View mSceneModeSwitcher;
private View mFilterModeSwitcher;
+ private View mReviewDoneButton;
+ private View mReviewCancelButton;
+ private View mReviewRetakeButton;
private ArrowTextView mRefocusToast;
private int mSize;
@@ -314,13 +317,18 @@ public class CameraControls extends RotatableLayout {
View retake = findViewById(R.id.btn_retake);
if (retake != null) {
- center(retake, shutter, rotation);
- View cancel = findViewById(R.id.btn_cancel);
- toLeft(cancel, shutter, rotation);
- View done = findViewById(R.id.btn_done);
- toRight(done, shutter, rotation);
- }
+ mReviewRetakeButton = retake;
+ mReviewCancelButton = findViewById(R.id.btn_cancel);
+ mReviewDoneButton = findViewById(R.id.btn_done);
+ center(mReviewRetakeButton, shutter, rotation);
+ toLeft(mReviewCancelButton, shutter, rotation);
+ toRight(mReviewDoneButton, shutter, rotation);
+ } else {
+ mReviewRetakeButton = null;
+ mReviewCancelButton = null;
+ mReviewDoneButton = null;
+ }
layoutRemaingPhotos();
}
@@ -972,10 +980,14 @@ public class CameraControls extends RotatableLayout {
View[] views = {
mSceneModeSwitcher, mFilterModeSwitcher, mFrontBackSwitcher,
TsMakeupManager.HAS_TS_MAKEUP ? mTsMakeupSwitcher : mHdrSwitcher,
- mMenu, mShutter, mPreview, mSwitcher, mMute
+ mMenu, mShutter, mPreview, mSwitcher, mMute, mReviewRetakeButton,
+ mReviewCancelButton, mReviewDoneButton
};
for (View v : views) {
- ((RotateImageView) v).setOrientation(orientation, animation);
+ if (v != null) {
+ ((RotateImageView) v).setOrientation(orientation,
+ animation);
+ }
}
layoutRemaingPhotos();
}
diff --git a/src/com/android/camera/ui/ModuleSwitcher.java b/src/com/android/camera/ui/ModuleSwitcher.java
index 189342a1b..603f81d4d 100644
--- a/src/com/android/camera/ui/ModuleSwitcher.java
+++ b/src/com/android/camera/ui/ModuleSwitcher.java
@@ -33,6 +33,7 @@ import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.FrameLayout.LayoutParams;
import android.widget.LinearLayout;
+import android.widget.ImageView;
import com.android.camera.util.CameraUtil;
import com.android.camera.util.GcamHelper;
@@ -203,6 +204,7 @@ public class ModuleSwitcher extends RotateImageView
for (int i = mDrawIds.length - 1; i >= 0; i--) {
RotateImageView item = new RotateImageView(getContext());
item.setImageResource(mDrawIds[i]);
+ item.setScaleType(ImageView.ScaleType.CENTER);
item.setBackgroundResource(R.drawable.bg_pressed);
final int index = i;
item.setOnClickListener(new OnClickListener() {
diff --git a/src/com/android/camera/ui/RotateImageView.java b/src/com/android/camera/ui/RotateImageView.java
index 05e1a7c5b..a8065c0a3 100644
--- a/src/com/android/camera/ui/RotateImageView.java
+++ b/src/com/android/camera/ui/RotateImageView.java
@@ -16,6 +16,7 @@
package com.android.camera.ui;
+import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@@ -28,6 +29,7 @@ import android.util.AttributeSet;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
+import com.android.camera.util.CameraUtil;
/**
* A @{code ImageView} which can rotate it's content.
@@ -47,6 +49,8 @@ public class RotateImageView extends TwoStateImageView implements Rotatable {
private long mAnimationStartTime = 0;
private long mAnimationEndTime = 0;
+ private boolean mNaturalPortrait = CameraUtil.isDefaultToPortrait(
+ (Activity) getContext());
public RotateImageView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -60,6 +64,19 @@ public class RotateImageView extends TwoStateImageView implements Rotatable {
return mTargetDegree;
}
+ private boolean isOrientationPortrait() {
+ int mapTo180Degree = (mCurrentDegree % 180);
+
+ // Assumging the devic's natural orientation is portrait and
+ // check if the current orienataion is within the landscape range
+ boolean isLandscape = ((mapTo180Degree > 45) &&
+ (mapTo180Degree < 135));
+ if (mNaturalPortrait)
+ return !isLandscape;
+ else
+ return isLandscape;
+ }
+
// Rotate the view counter-clockwise
@Override
public void setOrientation(int degree, boolean animation) {
@@ -124,10 +141,17 @@ public class RotateImageView extends TwoStateImageView implements Rotatable {
int saveCount = canvas.getSaveCount();
- // Scale down the image first if required.
- if ((getScaleType() == ImageView.ScaleType.FIT_CENTER) &&
- ((width < w) || (height < h))) {
- float ratio = Math.min((float) width / w, (float) height / h);
+ // Scale down or up the image first if required.
+ if (getScaleType() == ImageView.ScaleType.FIT_CENTER) {
+ float ratio;
+
+ // As camera layout is fixed to portrait, we need to
+ // swap canvas width and height when calculating the
+ // ratio for landscape mode.
+ if (isOrientationPortrait())
+ ratio = Math.min((float) width / w, (float) height / h);
+ else
+ ratio = Math.min((float) height / w, (float) width / h);
canvas.scale(ratio, ratio, width / 2.0f, height / 2.0f);
}
canvas.translate(left + width / 2, top + height / 2);