diff options
-rw-r--r-- | src/com/android/camera/ui/CameraControls.java | 25 | ||||
-rw-r--r-- | src/com/android/camera/ui/RotatableLayout.java | 2 |
2 files changed, 20 insertions, 7 deletions
diff --git a/src/com/android/camera/ui/CameraControls.java b/src/com/android/camera/ui/CameraControls.java index 5d2f12360..1fc83fdf4 100644 --- a/src/com/android/camera/ui/CameraControls.java +++ b/src/com/android/camera/ui/CameraControls.java @@ -62,12 +62,7 @@ public class CameraControls extends RotatableLayout { @Override public void onDisplayChanged(int arg0) { - int currentRotation = Util.getDisplayRotation((Activity) getContext()); - if ((currentRotation - mLastRotation) % 180 == 0) { - flipChildren(); - getParent().requestLayout(); - } - mLastRotation = currentRotation; + checkLayoutFlip(); } @Override @@ -76,6 +71,15 @@ public class CameraControls extends RotatableLayout { } } + private void checkLayoutFlip() { + int currentRotation = Util.getDisplayRotation((Activity) getContext()); + if ((currentRotation - mLastRotation + 360) % 360 == 180) { + mLastRotation = currentRotation; + flipChildren(); + getParent().requestLayout(); + } + } + @Override public void onFinishInflate() { super.onFinishInflate(); @@ -99,6 +103,14 @@ public class CameraControls extends RotatableLayout { } @Override + public void onWindowVisibilityChanged(int visibility) { + if (visibility == View.VISIBLE) { + // Make sure when coming back from onPause, the layout is rotated correctly + checkLayoutFlip(); + } + } + + @Override public void onDetachedFromWindow () { super.onDetachedFromWindow(); if (ApiHelper.HAS_DISPLAY_LISTENER) { @@ -109,6 +121,7 @@ public class CameraControls extends RotatableLayout { @Override public void onLayout(boolean changed, int l, int t, int r, int b) { + mLastRotation = Util.getDisplayRotation((Activity) getContext()); int orientation = getResources().getConfiguration().orientation; int size = getResources().getDimensionPixelSize(R.dimen.camera_controls_size); int rotation = getUnifiedRotation(); diff --git a/src/com/android/camera/ui/RotatableLayout.java b/src/com/android/camera/ui/RotatableLayout.java index 2dea58d9d..8355c8826 100644 --- a/src/com/android/camera/ui/RotatableLayout.java +++ b/src/com/android/camera/ui/RotatableLayout.java @@ -82,7 +82,7 @@ public class RotatableLayout extends FrameLayout { super.onConfigurationChanged(config); int rotation = Util.getDisplayRotation((Activity) getContext()); if ((rotation - mPrevRotation + 360) % 180 == 0) { - flipChildren(); + mPrevRotation = rotation; return; } boolean clockwise = isClockWiseRotation(mPrevRotation, rotation); |