summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/ui')
-rw-r--r--src/com/android/camera/ui/CameraControls.java85
-rw-r--r--src/com/android/camera/ui/CameraRootView.java67
-rw-r--r--src/com/android/camera/ui/FaceView.java18
-rw-r--r--src/com/android/camera/ui/FilmStripView.java29
-rw-r--r--src/com/android/camera/ui/NewCameraRootView.java145
-rw-r--r--src/com/android/camera/ui/RenderOverlay.java11
-rw-r--r--src/com/android/camera/ui/RotatableLayout.java52
7 files changed, 136 insertions, 271 deletions
diff --git a/src/com/android/camera/ui/CameraControls.java b/src/com/android/camera/ui/CameraControls.java
index 7940ae0d9..7fa6890a7 100644
--- a/src/com/android/camera/ui/CameraControls.java
+++ b/src/com/android/camera/ui/CameraControls.java
@@ -20,8 +20,6 @@ import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Rect;
-import android.hardware.display.DisplayManager;
-import android.hardware.display.DisplayManager.DisplayListener;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
@@ -40,44 +38,13 @@ public class CameraControls extends RotatableLayout {
private View mMenu;
private View mIndicators;
private View mPreview;
- private Object mDisplayListener = null;
- private int mLastRotation = 0;
public CameraControls(Context context, AttributeSet attrs) {
super(context, attrs);
- initDisplayListener();
}
public CameraControls(Context context) {
super(context);
- initDisplayListener();
- }
-
- public void initDisplayListener() {
- if (ApiHelper.HAS_DISPLAY_LISTENER) {
- mDisplayListener = new DisplayListener() {
-
- @Override
- public void onDisplayAdded(int arg0) {}
-
- @Override
- public void onDisplayChanged(int arg0) {
- checkLayoutFlip();
- }
-
- @Override
- public void onDisplayRemoved(int arg0) {}
- };
- }
- }
-
- private void checkLayoutFlip() {
- int currentRotation = Util.getDisplayRotation((Activity) getContext());
- if ((currentRotation - mLastRotation + 360) % 360 == 180) {
- mLastRotation = currentRotation;
- flipChildren();
- getParent().requestLayout();
- }
}
@Override
@@ -92,36 +59,7 @@ public class CameraControls extends RotatableLayout {
}
@Override
- public void onAttachedToWindow() {
- super.onAttachedToWindow();
- adjustControlsToRightPosition();
- mLastRotation = Util.getDisplayRotation((Activity) getContext());
- if (ApiHelper.HAS_DISPLAY_LISTENER) {
- ((DisplayManager) getContext().getSystemService(Context.DISPLAY_SERVICE))
- .registerDisplayListener((DisplayListener) mDisplayListener, null);
- }
- }
-
- @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) {
- ((DisplayManager) getContext().getSystemService(Context.DISPLAY_SERVICE))
- .unregisterDisplayListener((DisplayListener) mDisplayListener);
- }
- }
-
- @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();
@@ -168,19 +106,6 @@ public class CameraControls extends RotatableLayout {
}
}
- private int getUnifiedRotation() {
- // all the layout code assumes camera device orientation to be portrait
- // adjust rotation for landscape
- int orientation = getResources().getConfiguration().orientation;
- int rotation = Util.getDisplayRotation((Activity) getContext());
- int camOrientation = (rotation % 180 == 0) ? Configuration.ORIENTATION_PORTRAIT
- : Configuration.ORIENTATION_LANDSCAPE;
- if (camOrientation != orientation) {
- return (rotation + 90) % 360;
- }
- return rotation;
- }
-
private void center(View v, int l, int t, int r, int b, int orientation, int rotation, Rect result) {
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) v.getLayoutParams();
int tw = lp.leftMargin + v.getMeasuredWidth() + lp.rightMargin;
@@ -313,16 +238,6 @@ public class CameraControls extends RotatableLayout {
v.layout(r - v.getMeasuredWidth() - mr, t + mt, r - mr, t + mt + v.getMeasuredHeight());
}
- // In reverse landscape and reverse portrait, camera controls will be laid out
- // on the wrong side of the screen. We need to make adjustment to move the controls
- // to the USB side
- public void adjustControlsToRightPosition() {
- int orientation = getUnifiedRotation();
- if (orientation >= 180) {
- flipChildren();
- }
- }
-
private void adjustBackground() {
int rotation = getUnifiedRotation();
// remove current drawable and reset rotation
diff --git a/src/com/android/camera/ui/CameraRootView.java b/src/com/android/camera/ui/CameraRootView.java
index 76fea2cfa..adda70697 100644
--- a/src/com/android/camera/ui/CameraRootView.java
+++ b/src/com/android/camera/ui/CameraRootView.java
@@ -20,28 +20,34 @@ import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Rect;
+import android.hardware.display.DisplayManager;
+import android.hardware.display.DisplayManager.DisplayListener;
import android.util.AttributeSet;
-import android.view.Gravity;
import android.view.View;
import android.widget.FrameLayout;
-import android.widget.RelativeLayout;
import com.android.camera.Util;
-import com.android.gallery3d.R;
+import com.android.gallery3d.common.ApiHelper;
-public class CameraRootView extends RelativeLayout {
+public class CameraRootView extends FrameLayout {
private int mTopMargin = 0;
private int mBottomMargin = 0;
private int mLeftMargin = 0;
private int mRightMargin = 0;
- private int mOffset = 0;
private Rect mCurrentInsets;
+ private int mOffset = 0;
+ private Object mDisplayListener;
+ private MyDisplayListener mListener;
+ public interface MyDisplayListener {
+ public void onDisplayChanged();
+ }
+
public CameraRootView(Context context, AttributeSet attrs) {
super(context, attrs);
- // Layout the window as if we did not need navigation bar
- setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
+ initDisplayListener();
+ setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}
@Override
@@ -60,6 +66,46 @@ public class CameraRootView extends RelativeLayout {
return true;
}
+ public void initDisplayListener() {
+ if (ApiHelper.HAS_DISPLAY_LISTENER) {
+ mDisplayListener = new DisplayListener() {
+
+ @Override
+ public void onDisplayAdded(int arg0) {}
+
+ @Override
+ public void onDisplayChanged(int arg0) {
+ mListener.onDisplayChanged();
+ }
+
+ @Override
+ public void onDisplayRemoved(int arg0) {}
+ };
+ }
+ }
+
+ public void setDisplayChangeListener(MyDisplayListener listener) {
+ mListener = listener;
+ }
+
+ @Override
+ public void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ if (ApiHelper.HAS_DISPLAY_LISTENER) {
+ ((DisplayManager) getContext().getSystemService(Context.DISPLAY_SERVICE))
+ .registerDisplayListener((DisplayListener) mDisplayListener, null);
+ }
+ }
+
+ @Override
+ public void onDetachedFromWindow () {
+ super.onDetachedFromWindow();
+ if (ApiHelper.HAS_DISPLAY_LISTENER) {
+ ((DisplayManager) getContext().getSystemService(Context.DISPLAY_SERVICE))
+ .unregisterDisplayListener((DisplayListener) mDisplayListener);
+ }
+ }
+
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int rotation = Util.getDisplayRotation((Activity) getContext());
@@ -102,12 +148,15 @@ public class CameraRootView extends RelativeLayout {
// make sure all the children are resized
super.onMeasure(widthMeasureSpec - mLeftMargin - mRightMargin,
heightMeasureSpec - mTopMargin - mBottomMargin);
-
setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
}
@Override
public void onLayout(boolean changed, int l, int t, int r, int b) {
+ r -= l;
+ b -= t;
+ l = 0;
+ t = 0;
int orientation = getResources().getConfiguration().orientation;
// Lay out children
for (int i = 0; i < getChildCount(); i++) {
diff --git a/src/com/android/camera/ui/FaceView.java b/src/com/android/camera/ui/FaceView.java
index 24150497c..7d66dc079 100644
--- a/src/com/android/camera/ui/FaceView.java
+++ b/src/com/android/camera/ui/FaceView.java
@@ -31,9 +31,7 @@ import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
-import com.android.camera.CameraActivity;
-import com.android.camera.CameraScreenNail;
-import com.android.camera.NewPhotoUI;
+import com.android.camera.PhotoUI;
import com.android.camera.Util;
import com.android.gallery3d.R;
import com.android.gallery3d.common.ApiHelper;
@@ -41,7 +39,7 @@ import com.android.gallery3d.common.ApiHelper;
@TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH)
public class FaceView extends View
implements FocusIndicator, Rotatable,
- NewPhotoUI.SurfaceTextureSizeChangedListener {
+ PhotoUI.SurfaceTextureSizeChangedListener {
private static final String TAG = "CAM FaceView";
private final boolean LOGV = false;
// The value for android.hardware.Camera.setDisplayOrientation.
@@ -190,16 +188,8 @@ public class FaceView extends View
protected void onDraw(Canvas canvas) {
if (!mBlocked && (mFaces != null) && (mFaces.length > 0)) {
int rw, rh;
- if (mUncroppedWidth == 0) {
- // TODO: This check is temporary. It needs to be removed after the
- // refactoring is fully functioning.
- final CameraScreenNail sn = ((CameraActivity) getContext()).getCameraScreenNail();
- rw = sn.getUncroppedRenderWidth();
- rh = sn.getUncroppedRenderHeight();
- } else {
- rw = mUncroppedWidth;
- rh = mUncroppedHeight;
- }
+ rw = mUncroppedWidth;
+ rh = mUncroppedHeight;
// Prepare the matrix.
if (((rh > rw) && ((mDisplayOrientation == 0) || (mDisplayOrientation == 180)))
|| ((rw > rh) && ((mDisplayOrientation == 90) || (mDisplayOrientation == 270)))) {
diff --git a/src/com/android/camera/ui/FilmStripView.java b/src/com/android/camera/ui/FilmStripView.java
index fb8fd2e31..709d7c666 100644
--- a/src/com/android/camera/ui/FilmStripView.java
+++ b/src/com/android/camera/ui/FilmStripView.java
@@ -95,7 +95,7 @@ public class FilmStripView extends ViewGroup {
public int getWidth();
public int getHeight();
public int getType();
- public boolean isActionSupported(int action);
+ public boolean isUIActionSupported(int action);
// prepare() should be called first time before using it.
public void prepare();
@@ -137,6 +137,7 @@ public class FilmStripView extends ViewGroup {
public void onDataPromoted(int dataID);
public void onDataDemoted(int dataID);
public void onDataFullScreenChange(int dataID, boolean full);
+ public void onSwitchMode(boolean toCamera);
}
public interface Controller {
@@ -455,7 +456,7 @@ public class FilmStripView extends ViewGroup {
if (getCurrentType() == ImageData.TYPE_CAMERA_PREVIEW
&& !mController.isScalling()
&& mScale != MAX_SCALE) {
- mController.scaleTo(MAX_SCALE, DURATION_GEOMETRY_ADJUST);
+ mController.gotoFullScreen();
}
}
if (curr.getID() == mDataAdapter.getTotalNumber() - 1
@@ -1056,10 +1057,21 @@ public class FilmStripView extends ViewGroup {
public void gotoFilmStrip() {
unlockPosition();
scaleTo(FILM_STRIP_SCALE, DURATION_GEOMETRY_ADJUST);
+ if (mListener != null) {
+ mListener.onSwitchMode(false);
+ }
}
@Override
public void gotoFullScreen() {
+ if (mListener != null) {
+ // TODO: After full size images snapping to fill the screen at the
+ // end of a scroll/fling is implemented, we should only make
+ // this call when the view on the center of the screen is
+ // camera preview
+ mListener.onSwitchMode(true);
+ }
+ if (mScale == 1f) return;
scaleTo(1f, DURATION_GEOMETRY_ADJUST);
}
@@ -1139,11 +1151,11 @@ public class FilmStripView extends ViewGroup {
int id = mViewInfo[i].getID();
if (mDataAdapter.getImageData(id)
- .isActionSupported(ImageData.ACTION_DEMOTE)
+ .isUIActionSupported(ImageData.ACTION_DEMOTE)
&& transY > halfH) {
demoteData(i, id);
} else if (mDataAdapter.getImageData(id)
- .isActionSupported(ImageData.ACTION_PROMOTE)
+ .isUIActionSupported(ImageData.ACTION_PROMOTE)
&& transY < -halfH) {
promoteData(i, id);
} else {
@@ -1180,10 +1192,10 @@ public class FilmStripView extends ViewGroup {
ImageData data = mDataAdapter.getImageData(mViewInfo[hit].getID());
float transY = mViewInfo[hit].getTranslationY(mScale) - dy / mScale;
- if (!data.isActionSupported(ImageData.ACTION_DEMOTE) && transY > 0f) {
+ if (!data.isUIActionSupported(ImageData.ACTION_DEMOTE) && transY > 0f) {
transY = 0f;
}
- if (!data.isActionSupported(ImageData.ACTION_PROMOTE) && transY < 0f) {
+ if (!data.isUIActionSupported(ImageData.ACTION_PROMOTE) && transY < 0f) {
transY = 0f;
}
mViewInfo[hit].setTranslationY(transY, mScale);
@@ -1229,10 +1241,7 @@ public class FilmStripView extends ViewGroup {
@Override
public void onScaleEnd() {
if (mScaleTrend >= 1f) {
- if (mScale != 1f) {
- mController.gotoFullScreen();
- }
-
+ mController.gotoFullScreen();
if (getCurrentType() == ImageData.TYPE_CAMERA_PREVIEW) {
if (isAnchoredTo(0)) {
mController.lockAtCurrentView();
diff --git a/src/com/android/camera/ui/NewCameraRootView.java b/src/com/android/camera/ui/NewCameraRootView.java
deleted file mode 100644
index bf8192564..000000000
--- a/src/com/android/camera/ui/NewCameraRootView.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.camera.ui;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.res.Configuration;
-import android.graphics.Rect;
-import android.util.AttributeSet;
-import android.view.Gravity;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.FrameLayout;
-
-import com.android.camera.Util;
-import com.android.gallery3d.R;
-
-public class NewCameraRootView extends FrameLayout {
-
- private int mTopMargin = 0;
- private int mBottomMargin = 0;
- private int mLeftMargin = 0;
- private int mRightMargin = 0;
- private Rect mCurrentInsets;
- private int mOffset = 0;
- public NewCameraRootView(Context context, AttributeSet attrs) {
- super(context, attrs);
- setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
- }
-
- @Override
- protected boolean fitSystemWindows(Rect insets) {
- super.fitSystemWindows(insets);
- mCurrentInsets = insets;
- // insets include status bar, navigation bar, etc
- // In this case, we are only concerned with the size of nav bar
- if (mOffset > 0) return true;
-
- if (insets.bottom > 0) {
- mOffset = insets.bottom;
- } else if (insets.right > 0) {
- mOffset = insets.right;
- }
- return true;
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int rotation = Util.getDisplayRotation((Activity) getContext());
- // all the layout code assumes camera device orientation to be portrait
- // adjust rotation for landscape
- int orientation = getResources().getConfiguration().orientation;
- int camOrientation = (rotation % 180 == 0) ? Configuration.ORIENTATION_PORTRAIT
- : Configuration.ORIENTATION_LANDSCAPE;
- if (camOrientation != orientation) {
- rotation = (rotation + 90) % 360;
- }
- // calculate margins
- mLeftMargin = 0;
- mRightMargin = 0;
- mBottomMargin = 0;
- mTopMargin = 0;
- switch (rotation) {
- case 0:
- mBottomMargin += mOffset;
- break;
- case 90:
- mRightMargin += mOffset;
- break;
- case 180:
- mTopMargin += mOffset;
- break;
- case 270:
- mLeftMargin += mOffset;
- break;
- }
- if (mCurrentInsets != null) {
- if (mCurrentInsets.right > 0) {
- // navigation bar on the right
- mRightMargin = mRightMargin > 0 ? mRightMargin : mCurrentInsets.right;
- } else {
- // navigation bar on the bottom
- mBottomMargin = mBottomMargin > 0 ? mBottomMargin : mCurrentInsets.bottom;
- }
- }
- // make sure all the children are resized
- super.onMeasure(widthMeasureSpec - mLeftMargin - mRightMargin,
- heightMeasureSpec - mTopMargin - mBottomMargin);
- setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
- }
-
- @Override
- public void onLayout(boolean changed, int l, int t, int r, int b) {
- r -= l;
- b -= t;
- l = 0;
- t = 0;
- int orientation = getResources().getConfiguration().orientation;
- // Lay out children
- for (int i = 0; i < getChildCount(); i++) {
- View v = getChildAt(i);
- if (v instanceof CameraControls) {
- // Lay out camera controls to center on the short side of the screen
- // so that they stay in place during rotation
- int width = v.getMeasuredWidth();
- int height = v.getMeasuredHeight();
- if (orientation == Configuration.ORIENTATION_PORTRAIT) {
- int left = (l + r - width) / 2;
- v.layout(left, t + mTopMargin, left + width, b - mBottomMargin);
- } else {
- int top = (t + b - height) / 2;
- v.layout(l + mLeftMargin, top, r - mRightMargin, top + height);
- }
- } else {
- v.layout(l + mLeftMargin, t + mTopMargin, r - mRightMargin, b - mBottomMargin);
- }
- }
- }
-
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- //TODO: This scale check is temporary, should be removed once full screen notification
- // is implemented
- if (((View) getParent()).getScaleX() == 1.0f) {
- return super.dispatchTouchEvent(ev);
- } else {
- return false;
- }
- }
-}
diff --git a/src/com/android/camera/ui/RenderOverlay.java b/src/com/android/camera/ui/RenderOverlay.java
index 0bda10a23..d82ce18b6 100644
--- a/src/com/android/camera/ui/RenderOverlay.java
+++ b/src/com/android/camera/ui/RenderOverlay.java
@@ -23,7 +23,7 @@ import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
-import com.android.camera.NewPreviewGestures;
+import com.android.camera.PreviewGestures;
import java.util.ArrayList;
import java.util.List;
@@ -44,7 +44,7 @@ public class RenderOverlay extends FrameLayout {
private RenderView mRenderView;
private List<Renderer> mClients;
- private NewPreviewGestures mGestures;
+ private PreviewGestures mGestures;
// reverse list of touch clients
private List<Renderer> mTouchClients;
private int[] mPosition = new int[2];
@@ -59,7 +59,7 @@ public class RenderOverlay extends FrameLayout {
setWillNotDraw(false);
}
- public void setGestures(NewPreviewGestures gestures) {
+ public void setGestures(PreviewGestures gestures) {
mGestures = gestures;
}
@@ -89,7 +89,10 @@ public class RenderOverlay extends FrameLayout {
@Override
public boolean dispatchTouchEvent(MotionEvent m) {
- if (mGestures != null) mGestures.dispatchTouch(m);
+ if (mGestures != null) {
+ if (!mGestures.isEnabled()) return false;
+ mGestures.dispatchTouch(m);
+ }
return true;
}
diff --git a/src/com/android/camera/ui/RotatableLayout.java b/src/com/android/camera/ui/RotatableLayout.java
index 8355c8826..965d62a90 100644
--- a/src/com/android/camera/ui/RotatableLayout.java
+++ b/src/com/android/camera/ui/RotatableLayout.java
@@ -65,9 +65,11 @@ public class RotatableLayout extends FrameLayout {
mPrevRotation = Util.getDisplayRotation((Activity) getContext());
// check if there is any rotation before the view is attached to window
int currentOrientation = getResources().getConfiguration().orientation;
- if (mInitialOrientation == currentOrientation) {
+ int orientation = getUnifiedRotation();
+ if (mInitialOrientation == currentOrientation && orientation < 180) {
return;
}
+
if (mInitialOrientation == Configuration.ORIENTATION_LANDSCAPE
&& currentOrientation == Configuration.ORIENTATION_PORTRAIT) {
rotateLayout(true);
@@ -75,19 +77,62 @@ public class RotatableLayout extends FrameLayout {
&& currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
rotateLayout(false);
}
+ // In reverse landscape and reverse portrait, camera controls will be laid out
+ // on the wrong side of the screen. We need to make adjustment to move the controls
+ // to the USB side
+ if (orientation >= 180) {
+ flipChildren();
+ }
+ }
+
+ protected int getUnifiedRotation() {
+ // all the layout code assumes camera device orientation to be portrait
+ // adjust rotation for landscape
+ int orientation = getResources().getConfiguration().orientation;
+ int rotation = Util.getDisplayRotation((Activity) getContext());
+ int camOrientation = (rotation % 180 == 0) ? Configuration.ORIENTATION_PORTRAIT
+ : Configuration.ORIENTATION_LANDSCAPE;
+ if (camOrientation != orientation) {
+ return (rotation + 90) % 360;
+ }
+ return rotation;
+ }
+
+ public void checkLayoutFlip() {
+ int currentRotation = Util.getDisplayRotation((Activity) getContext());
+ if ((currentRotation - mPrevRotation + 360) % 360 == 180) {
+ mPrevRotation = currentRotation;
+ flipChildren();
+ getParent().requestLayout();
+ }
+ }
+
+ @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 onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
int rotation = Util.getDisplayRotation((Activity) getContext());
- if ((rotation - mPrevRotation + 360) % 180 == 0) {
+ int diff = (rotation - mPrevRotation + 360) % 360;
+ if ( diff == 0) {
+ // No rotation
+ return;
+ } else if (diff == 180) {
+ // 180-degree rotation
mPrevRotation = rotation;
+ flipChildren();
return;
}
+ // 90 or 270-degree rotation
boolean clockwise = isClockWiseRotation(mPrevRotation, rotation);
- rotateLayout(clockwise);
mPrevRotation = rotation;
+ rotateLayout(clockwise);
}
protected void rotateLayout(boolean clockwise) {
@@ -113,7 +158,6 @@ public class RotatableLayout extends FrameLayout {
}
protected void flipChildren() {
- mPrevRotation = Util.getDisplayRotation((Activity) getContext());
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);