diff options
| author | Doris Liu <tianliu@google.com> | 2013-04-22 17:13:05 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-04-22 17:13:05 +0000 |
| commit | ed689873c9da338859dc8858c08afa4fa31578f2 (patch) | |
| tree | 022a1d0e0120c8e0ec14a7915f8962c861c23c9d /src/com | |
| parent | ca6f04e27bbcab953bd3f9dcf50476a1c4b70aac (diff) | |
| parent | 1f17ec30d1b6b0d976d5dd3857bd305aaa8923ee (diff) | |
| download | android_packages_apps_Gallery2-ed689873c9da338859dc8858c08afa4fa31578f2.tar.gz android_packages_apps_Gallery2-ed689873c9da338859dc8858c08afa4fa31578f2.tar.bz2 android_packages_apps_Gallery2-ed689873c9da338859dc8858c08afa4fa31578f2.zip | |
Merge "Fix camera buttons showing up at wrong position" into gb-ub-photos-bryce
Diffstat (limited to 'src/com')
| -rw-r--r-- | src/com/android/camera/ui/RotatableLayout.java | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/com/android/camera/ui/RotatableLayout.java b/src/com/android/camera/ui/RotatableLayout.java index 6836b39b2..bf8060528 100644 --- a/src/com/android/camera/ui/RotatableLayout.java +++ b/src/com/android/camera/ui/RotatableLayout.java @@ -38,6 +38,8 @@ import com.android.camera.Util; public class RotatableLayout extends FrameLayout { private static final String TAG = "RotatableLayout"; + // Initial orientation of the layout (ORIENTATION_PORTRAIT, or ORIENTATION_LANDSCAPE) + private int mInitialOrientation; private int mPrevRotation; private RotationListener mListener = null; public interface RotationListener { @@ -45,19 +47,33 @@ public class RotatableLayout extends FrameLayout { } public RotatableLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); + mInitialOrientation = getResources().getConfiguration().orientation; } public RotatableLayout(Context context, AttributeSet attrs) { super(context, attrs); + mInitialOrientation = getResources().getConfiguration().orientation; } public RotatableLayout(Context context) { super(context); + mInitialOrientation = getResources().getConfiguration().orientation; } @Override - public void onFinishInflate() { // get initial orientation - super.onFinishInflate(); + public void onAttachedToWindow() { + // check if there is any rotation before the view is attached to window + int currentOrientation = getResources().getConfiguration().orientation; + if (mInitialOrientation == currentOrientation) { + return; + } + if (mInitialOrientation == Configuration.ORIENTATION_LANDSCAPE + && currentOrientation == Configuration.ORIENTATION_PORTRAIT) { + rotateLayout(true); + } else if (mInitialOrientation == Configuration.ORIENTATION_PORTRAIT + && currentOrientation == Configuration.ORIENTATION_LANDSCAPE) { + rotateLayout(false); + } mPrevRotation = Util.getDisplayRotation((Activity) getContext()); } @@ -65,7 +81,16 @@ public class RotatableLayout extends FrameLayout { public void onConfigurationChanged(Configuration config) { super.onConfigurationChanged(config); int rotation = Util.getDisplayRotation((Activity) getContext()); + if ((rotation - mPrevRotation + 360) % 180 == 0) { + flipChildren(); + return; + } boolean clockwise = isClockWiseRotation(mPrevRotation, rotation); + rotateLayout(clockwise); + mPrevRotation = rotation; + } + + protected void rotateLayout(boolean clockwise) { // Change the size of the layout ViewGroup.LayoutParams lp = getLayoutParams(); int width = lp.width; @@ -75,7 +100,6 @@ public class RotatableLayout extends FrameLayout { setLayoutParams(lp); // rotate all the children - mPrevRotation = rotation; rotateChildren(clockwise); } |
