diff options
author | Likai Ding <likaid@codeaurora.org> | 2015-01-26 10:07:21 +0800 |
---|---|---|
committer | Likai Ding <likaid@codeaurora.org> | 2015-02-02 13:55:08 +0800 |
commit | e2fb5dc7798cf677f6a66b6a697c4a011b0a101f (patch) | |
tree | 9250c3a47e27b90e3c094c9d3ffa1365c3914178 /src/com/android/camera/ui/CameraControls.java | |
parent | 07cf80cc97c68f12d5728919fcebba28e750761d (diff) | |
download | android_packages_apps_Snap-e2fb5dc7798cf677f6a66b6a697c4a011b0a101f.tar.gz android_packages_apps_Snap-e2fb5dc7798cf677f6a66b6a697c4a011b0a101f.tar.bz2 android_packages_apps_Snap-e2fb5dc7798cf677f6a66b6a697c4a011b0a101f.zip |
SnapdragonCamera: fix portrait orientation
Fix camera activity to portrait, so there is no delay when rotation
occurs. Main changes are:
1. RotateLayout now supports padding and dynamically added child.
2. Camera controls and gesture detetion are now orientation-aware.
3. Toasts are replaced with RotateTextToast.
4. Obselete layout files are removed.
Change-Id: I338849bd7fb84b847eb357f771a24a5cc09bf6fa
Diffstat (limited to 'src/com/android/camera/ui/CameraControls.java')
-rw-r--r-- | src/com/android/camera/ui/CameraControls.java | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/src/com/android/camera/ui/CameraControls.java b/src/com/android/camera/ui/CameraControls.java index 0938ffc19..dedf3d583 100644 --- a/src/com/android/camera/ui/CameraControls.java +++ b/src/com/android/camera/ui/CameraControls.java @@ -39,6 +39,7 @@ import java.util.ArrayList; import org.codeaurora.snapcam.R; import com.android.camera.ui.ModuleSwitcher; +import com.android.camera.ui.RotateImageView; import com.android.camera.ShutterButton; import com.android.camera.util.CameraUtil; @@ -80,6 +81,7 @@ public class CameraControls extends RotatableLayout { private LinearLayout mRemainingPhotos; private TextView mRemainingPhotosText; + private int mOrientation; private int mPreviewRatio; private static int mTopMargin = 0; @@ -776,34 +778,22 @@ public class CameraControls extends RotatableLayout { int h = mRemainingPhotos.getMeasuredHeight(); int m = getResources().getDimensionPixelSize(R.dimen.remaining_photos_margin); - int hc, vc; - int rotation = getUnifiedRotation(); - switch (rotation) { - case 90: - hc = (rl + rr) / 2 - m; - vc = (rt + rb) / 2; - break; - case 180: - hc = (rl + rr) / 2; - vc = (rt + rb) / 2 + m; - break; - case 270: - hc = (rl + rr) / 2 + m; - vc = (rt + rb) / 2; - break; - default: - hc = (rl + rr) / 2; - vc = (rt + rb) / 2 - m; - break; + int hc = (rl + rr) / 2; + int vc = (rt + rb) / 2 - m; + if (mOrientation == 90 || mOrientation == 270) { + vc -= w / 2; } mRemainingPhotos.layout(hc - w / 2, vc - h / 2, hc + w / 2, vc + h / 2); + mRemainingPhotos.setRotation(-mOrientation); } public void updateRemainingPhotos(int remaining) { if (remaining < 0) { mRemainingPhotos.setVisibility(View.GONE); } else { - mRemainingPhotos.setVisibility(View.VISIBLE); + for (int i = mRemainingPhotos.getChildCount() - 1; i >= 0; --i) { + mRemainingPhotos.getChildAt(i).setVisibility(View.VISIBLE); + } mRemainingPhotosText.setText(remaining + " "); } } @@ -829,6 +819,18 @@ public class CameraControls extends RotatableLayout { mRemainingPhotos.setVisibility(show ? View.GONE : View.VISIBLE); } + public void setOrientation(int orientation, boolean animation) { + mOrientation = orientation; + View[] views = { + mSceneModeSwitcher, mFilterModeSwitcher, mFrontBackSwitcher, + mHdrSwitcher, mMenu, mShutter, mPreview, mSwitcher + }; + for (View v : views) { + ((RotateImageView) v).setOrientation(orientation, animation); + } + layoutRemaingPhotos(); + } + private class ArrowTextView extends TextView { private static final int TEXT_SIZE = 14; private static final int PADDING_SIZE = 18; |