summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/ui
diff options
context:
space:
mode:
authorJay Wang <jaywang@codeaurora.org>2016-05-03 11:59:46 -0700
committerJay Wang <jaywang@codeaurora.org>2016-05-04 14:41:00 -0700
commit377456cde5b0c385ea6635a989df68b6f84cc6cb (patch)
treec6395c115435e026c758a73b88f7407d585644f1 /src/com/android/camera/ui
parent6b741069fbe98a3b75ae8744f4a7790525199deb (diff)
downloadandroid_packages_apps_Snap-377456cde5b0c385ea6635a989df68b6f84cc6cb.tar.gz
android_packages_apps_Snap-377456cde5b0c385ea6635a989df68b6f84cc6cb.tar.bz2
android_packages_apps_Snap-377456cde5b0c385ea6635a989df68b6f84cc6cb.zip
SnapdragonCamera: Support rotation for image review layout
Currently, image review layout is fixed to portrait mode. Changing the resources to use RotateImageView and update the scaling function in RotateImageView to support both up and down scaling of the image CRs-Fixed: 1004669 Change-Id: I6940227c634b7654bce5de5efe032aaa8da80e72
Diffstat (limited to 'src/com/android/camera/ui')
-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
3 files changed, 50 insertions, 12 deletions
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);