From 3790102575878c57f1fd47260fa03eaa6ff71798 Mon Sep 17 00:00:00 2001 From: Danny Baumann Date: Tue, 19 Apr 2016 11:28:06 +0200 Subject: Improve RTL layout behaviour. - Swap top menu items order in RTL - Swipe in menu from the right in RTL - Make it possible to select scene/filter items in RTL - Remove/clean up some nonsense code Change-Id: I884a06f5cc6e72a1d2ee19dbdf32ce511c8466ec JIRA:NIGHTLIES-2849 --- src/com/android/camera/PhotoMenu.java | 202 ++++++++------------------ src/com/android/camera/PhotoUI.java | 41 ++---- src/com/android/camera/PreviewGestures.java | 13 +- src/com/android/camera/VideoMenu.java | 172 ++++++++-------------- src/com/android/camera/VideoUI.java | 42 +++--- src/com/android/camera/ui/CameraControls.java | 10 +- 6 files changed, 173 insertions(+), 307 deletions(-) (limited to 'src/com/android') diff --git a/src/com/android/camera/PhotoMenu.java b/src/com/android/camera/PhotoMenu.java index 078a23e2d..9627c3e19 100644 --- a/src/com/android/camera/PhotoMenu.java +++ b/src/com/android/camera/PhotoMenu.java @@ -99,8 +99,8 @@ public class PhotoMenu extends MenuController private boolean mIsCDSUpdated = false; private int privateCounter = 0; private static final int ANIMATION_DURATION = 300; - private static final int CLICK_THRESHOLD = 200; private int previewMenuSize; + private Rect mTmpRect = new Rect(); public PhotoMenu(CameraActivity activity, PhotoUI ui) { super(activity); @@ -300,37 +300,20 @@ public class PhotoMenu extends MenuController mPopupStatus = POPUP_IN_ANIMATION_SLIDE; ViewPropertyAnimator vp = v.animate(); - if (View.LAYOUT_DIRECTION_RTL == TextUtils - .getLayoutDirectionFromLocale(Locale.getDefault())) { - switch (mUI.getOrientation()) { - case 0: - vp.translationXBy(v.getWidth()); - break; - case 90: - vp.translationYBy(-2 * v.getHeight()); - break; - case 180: - vp.translationXBy(-2 * v.getWidth()); - break; - case 270: - vp.translationYBy(v.getHeight()); - break; - } - } else { - switch (mUI.getOrientation()) { - case 0: - vp.translationXBy(-v.getWidth()); - break; - case 90: - vp.translationYBy(2 * v.getHeight()); - break; - case 180: - vp.translationXBy(2 * v.getWidth()); - break; - case 270: - vp.translationYBy(-v.getHeight()); - break; - } + int sign = mUI.isRtl() ? -1 : 1; + switch (mUI.getOrientation()) { + case 0: + vp.translationXBy(sign * -v.getWidth()); + break; + case 90: + vp.translationYBy(sign * 2 * v.getHeight()); + break; + case 180: + vp.translationXBy(sign * 2 * v.getWidth()); + break; + case 270: + vp.translationYBy(sign * -v.getHeight()); + break; } vp.setListener(new AnimatorListener() { @Override @@ -386,54 +369,30 @@ public class PhotoMenu extends MenuController orientation = 0; ViewPropertyAnimator vp = v.animate(); + int sign = mUI.isRtl() ? -1 : 1; float dest; - if (View.LAYOUT_DIRECTION_RTL == TextUtils - .getLayoutDirectionFromLocale(Locale.getDefault())) { - switch (orientation) { - case 0: - dest = v.getX(); - v.setX(-(dest - delta)); - vp.translationX(dest); - break; - case 90: - dest = v.getY(); - v.setY(-(dest + delta)); - vp.translationY(dest); - break; - case 180: - dest = v.getX(); - v.setX(-(dest + delta)); - vp.translationX(dest); - break; - case 270: - dest = v.getY(); - v.setY(-(dest - delta)); - vp.translationY(dest); - break; - } - } else { - switch (orientation) { - case 0: - dest = v.getX(); - v.setX(dest - delta); - vp.translationX(dest); - break; - case 90: - dest = v.getY(); - v.setY(dest + delta); - vp.translationY(dest); - break; - case 180: - dest = v.getX(); - v.setX(dest + delta); - vp.translationX(dest); - break; - case 270: - dest = v.getY(); - v.setY(dest - delta); - vp.translationY(dest); - break; - } + + switch (orientation) { + case 0: + dest = v.getX(); + v.setX(sign * (dest - delta)); + vp.translationX(dest); + break; + case 90: + dest = v.getY(); + v.setY(sign * (dest + delta)); + vp.translationY(dest); + break; + case 180: + dest = v.getX(); + v.setX(sign * (dest + delta)); + vp.translationX(dest); + break; + case 270: + dest = v.getY(); + v.setY(sign * (dest - delta)); + vp.translationY(dest); + break; } vp.setDuration(ANIMATION_DURATION).start(); } @@ -449,13 +408,9 @@ public class PhotoMenu extends MenuController return; mPreviewMenuStatus = PREVIEW_MENU_IN_ANIMATION; - ViewPropertyAnimator vp = v.animate(); - if (View.LAYOUT_DIRECTION_RTL == TextUtils - .getLayoutDirectionFromLocale(Locale.getDefault())) { - vp.translationXBy(v.getWidth()).setDuration(ANIMATION_DURATION); - } else { - vp.translationXBy(-v.getWidth()).setDuration(ANIMATION_DURATION); - } + ViewPropertyAnimator vp = v.animate() + .translationXBy(-v.getWidth() * (mUI.isRtl() ? -1 : 1)) + .setDuration(ANIMATION_DURATION); vp.setListener(new AnimatorListener() { @Override public void onAnimationStart(Animator animation) { @@ -498,28 +453,20 @@ public class PhotoMenu extends MenuController || mPopupStatus == POPUP_IN_ANIMATION_SLIDE || mPopupStatus == POPUP_IN_ANIMATION_FADE) return false; - if (mUI.getMenuLayout() == null) - return false; - Rect rec = new Rect(); - mUI.getMenuLayout().getChildAt(0).getHitRect(rec); - return rec.contains((int) ev.getX(), (int) ev.getY()); + return isOverView(mUI.getMenuLayout(), ev); } public boolean isOverPreviewMenu(MotionEvent ev) { if (mPreviewMenuStatus != PREVIEW_MENU_ON) return false; - if (mUI.getPreviewMenuLayout() == null) + return isOverView(mUI.getPreviewMenuLayout(), ev); + } + + private boolean isOverView(View view, MotionEvent ev) { + if (view == null) return false; - Rect rec = new Rect(); - mUI.getPreviewMenuLayout().getChildAt(0).getHitRect(rec); - if (View.LAYOUT_DIRECTION_RTL == TextUtils - .getLayoutDirectionFromLocale(Locale.getDefault())) { - rec.left = mUI.getRootView().getWidth() - (rec.right-rec.left); - rec.right = mUI.getRootView().getWidth(); - } - rec.top += (int) mUI.getPreviewMenuLayout().getY(); - rec.bottom += (int) mUI.getPreviewMenuLayout().getY(); - return rec.contains((int) ev.getX(), (int) ev.getY()); + view.getHitRect(mTmpRect); + return mTmpRect.contains((int) ev.getX(), (int) ev.getY()); } public boolean isMenuBeingShown() { @@ -769,9 +716,8 @@ public class PhotoMenu extends MenuController addSceneMode(); ViewGroup menuLayout = mUI.getPreviewMenuLayout(); if (menuLayout != null) { - View view = menuLayout.getChildAt(0); mUI.adjustOrientation(); - animateSlideIn(view, previewMenuSize, false); + animateSlideIn(menuLayout, previewMenuSize, false); } } }); @@ -856,25 +802,15 @@ public class PhotoMenu extends MenuController TextView label = (TextView) layout2.findViewById(R.id.label); final int j = i; - layout2.setOnTouchListener(new View.OnTouchListener() { - private long startTime; - + layout2.setOnClickListener(new View.OnClickListener() { @Override - public boolean onTouch(View v, MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - startTime = System.currentTimeMillis(); - } else if (event.getAction() == MotionEvent.ACTION_UP) { - if (System.currentTimeMillis() - startTime < CLICK_THRESHOLD) { - pref.setValueIndex(j); - onSettingChanged(pref); - updateSceneModeIcon(pref); - for (View v1 : views) { - v1.setActivated(v1 == v); - } - } - + public void onClick(View v) { + pref.setValueIndex(j); + onSettingChanged(pref); + updateSceneModeIcon(pref); + for (View v1 : views) { + v1.setActivated(v1 == v); } - return true; } }); @@ -914,9 +850,8 @@ public class PhotoMenu extends MenuController addFilterMode(); ViewGroup menuLayout = mUI.getPreviewMenuLayout(); if (menuLayout != null) { - View view = mUI.getPreviewMenuLayout().getChildAt(0); mUI.adjustOrientation(); - animateSlideIn(view, previewMenuSize, false); + animateSlideIn(menuLayout, previewMenuSize, false); } } }); @@ -989,23 +924,14 @@ public class PhotoMenu extends MenuController ImageView imageView = (ImageView) layout2.findViewById(R.id.image); final int j = i; - layout2.setOnTouchListener(new View.OnTouchListener() { - private long startTime; - + layout2.setOnClickListener(new View.OnClickListener() { @Override - public boolean onTouch(View v, MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - startTime = System.currentTimeMillis(); - } else if (event.getAction() == MotionEvent.ACTION_UP) { - if (System.currentTimeMillis() - startTime < CLICK_THRESHOLD) { - pref.setValueIndex(j); - onSettingChanged(pref); - for (View v1 : views) { - v1.setActivated(v1 == v); - } - } + public void onClick(View v) { + pref.setValueIndex(j); + onSettingChanged(pref); + for (View v1 : views) { + v1.setActivated(v1 == v); } - return true; } }); diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java index 2aaf19d6d..ed3dd1c37 100644 --- a/src/com/android/camera/PhotoUI.java +++ b/src/com/android/camera/PhotoUI.java @@ -798,8 +798,11 @@ public class PhotoUI implements PieListener, return mPreviewMenuLayout; } + public boolean isRtl() { + return mRootView.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; + } + public void showPopup(ListView popup, int level, boolean animate) { - FrameLayout.LayoutParams params; hideUI(); popup.setVisibility(View.VISIBLE); @@ -807,16 +810,9 @@ public class PhotoUI implements PieListener, if (mMenuLayout == null) { mMenuLayout = new RotateLayout(mActivity, null); mMenuLayout.setRootView(mRootView); - if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) { - params = new FrameLayout.LayoutParams( - CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT, - Gravity.LEFT | Gravity.TOP); - } else { - params = new FrameLayout.LayoutParams( - CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT, - Gravity.RIGHT | Gravity.TOP); - } - mMenuLayout.setLayoutParams(params); + mMenuLayout.setLayoutParams(new FrameLayout.LayoutParams( + CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT, + Gravity.START | Gravity.TOP)); mRootView.addView(mMenuLayout); } mMenuLayout.addView(popup); @@ -827,15 +823,6 @@ public class PhotoUI implements PieListener, mSubMenuLayout = new RotateLayout(mActivity, null); mRootView.addView(mSubMenuLayout); } - if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) { - params = new FrameLayout.LayoutParams( - CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT, - Gravity.LEFT | Gravity.TOP); - } else { - params = new FrameLayout.LayoutParams( - CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT, - Gravity.RIGHT | Gravity.TOP); - } int containerHeight = mRootView.getClientRectForOrientation(mOrientation).height(); int height = ((ListSubMenu) popup).getPreCalculatedHeight(); @@ -844,10 +831,13 @@ public class PhotoUI implements PieListener, y = Math.max(0, containerHeight - height); } - if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) { - params.setMargins(CameraActivity.SETTING_LIST_WIDTH_1, y, 0, 0); - } else { + final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( + CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT, + Gravity.START | Gravity.TOP); + if (isRtl()) { params.setMargins(0, y, CameraActivity.SETTING_LIST_WIDTH_1, 0); + } else { + params.setMargins(CameraActivity.SETTING_LIST_WIDTH_1, y, 0, 0); } mSubMenuLayout.setLayoutParams(params); @@ -933,13 +923,14 @@ public class PhotoUI implements PieListener, } public boolean sendTouchToPreviewMenu(MotionEvent ev) { + ev.offsetLocation(-mPreviewMenuLayout.getLeft(), -mPreviewMenuLayout.getTop()); return mPreviewMenuLayout.dispatchTouchEvent(ev); } public boolean sendTouchToMenu(MotionEvent ev) { if (mMenuLayout != null) { - View v = mMenuLayout.getChildAt(0); - return v.dispatchTouchEvent(ev); + ev.offsetLocation(-mMenuLayout.getLeft(), -mMenuLayout.getTop()); + return mMenuLayout.dispatchTouchEvent(ev); } return false; } diff --git a/src/com/android/camera/PreviewGestures.java b/src/com/android/camera/PreviewGestures.java index 42d64bb3c..913dd1e3c 100644 --- a/src/com/android/camera/PreviewGestures.java +++ b/src/com/android/camera/PreviewGestures.java @@ -96,7 +96,7 @@ public class PreviewGestures else if (mVideoMenu != null) orientation = mVideoMenu.getOrientation(); - if (isLeftSwipe(orientation, deltaX, deltaY)) { + if (isSwipeForMenu(orientation, deltaX, deltaY)) { waitUntilNextDown = true; if (mPhotoMenu != null && !mPhotoMenu.isMenuBeingShown()) mPhotoMenu.openFirstLevel(); @@ -107,7 +107,16 @@ public class PreviewGestures return false; } - private boolean isLeftSwipe(int orientation, int deltaX, int deltaY) { + private boolean isSwipeForMenu(int orientation, int deltaX, int deltaY) { + if (mOverlay.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) { + // in RTL we want to track swipes from right, else swipes from left + if (orientation == 90 || orientation == 270) { + deltaY = -deltaY; + } else { + deltaX = -deltaX; + } + } + switch (orientation) { case 90: return deltaY > 0 && Math.abs(deltaY) > 2 * Math.abs(deltaX); diff --git a/src/com/android/camera/VideoMenu.java b/src/com/android/camera/VideoMenu.java index 15d1839cb..c7e7e9fc6 100644 --- a/src/com/android/camera/VideoMenu.java +++ b/src/com/android/camera/VideoMenu.java @@ -86,8 +86,8 @@ public class VideoMenu extends MenuController private boolean mIsVideoTNREnabled = false; private boolean mIsVideoCDSUpdated = false; private static final int ANIMATION_DURATION = 300; - private static final int CLICK_THRESHOLD = 200; private int previewMenuSize; + private Rect mTmpRect = new Rect(); public VideoMenu(CameraActivity activity, VideoUI ui) { super(activity); @@ -232,37 +232,21 @@ public class VideoMenu extends MenuController mPopupStatus = POPUP_IN_ANIMATION_SLIDE; ViewPropertyAnimator vp = v.animate(); - if (View.LAYOUT_DIRECTION_RTL == TextUtils - .getLayoutDirectionFromLocale(Locale.getDefault())) { - switch (mUI.getOrientation()) { - case 0: - vp.translationXBy(v.getWidth()); - break; - case 90: - vp.translationYBy(-2 * v.getHeight()); - break; - case 180: - vp.translationXBy(-2 * v.getWidth()); - break; - case 270: - vp.translationYBy(v.getHeight()); - break; - } - } else { - switch (mUI.getOrientation()) { - case 0: - vp.translationXBy(-v.getWidth()); - break; - case 90: - vp.translationYBy(2 * v.getHeight()); - break; - case 180: - vp.translationXBy(2 * v.getWidth()); - break; - case 270: - vp.translationYBy(-v.getHeight()); - break; - } + int sign = mUI.isRtl() ? -1 : 1; + + switch (mUI.getOrientation()) { + case 0: + vp.translationXBy(-v.getWidth() * sign); + break; + case 90: + vp.translationYBy(2 * v.getHeight() * sign); + break; + case 180: + vp.translationXBy(2 * v.getWidth() * sign); + break; + case 270: + vp.translationYBy(-v.getHeight() * sign); + break; } vp.setListener(new AnimatorListener() { @@ -319,54 +303,30 @@ public class VideoMenu extends MenuController orientation = 0; ViewPropertyAnimator vp = v.animate(); + int sign = mUI.isRtl() ? -1 : 1; float dest; - if (View.LAYOUT_DIRECTION_RTL == TextUtils - .getLayoutDirectionFromLocale(Locale.getDefault())) { - switch (orientation) { - case 0: - dest = v.getX(); - v.setX(-(dest - delta)); - vp.translationX(dest); - break; - case 90: - dest = v.getY(); - v.setY(-(dest + delta)); - vp.translationY(dest); - break; - case 180: - dest = v.getX(); - v.setX(-(dest + delta)); - vp.translationX(dest); - break; - case 270: - dest = v.getY(); - v.setY(-(dest - delta)); - vp.translationY(dest); - break; - } - } else { - switch (orientation) { - case 0: - dest = v.getX(); - v.setX(dest - delta); - vp.translationX(dest); - break; - case 90: - dest = v.getY(); - v.setY(dest + delta); - vp.translationY(dest); - break; - case 180: - dest = v.getX(); - v.setX(dest + delta); - vp.translationX(dest); - break; - case 270: - dest = v.getY(); - v.setY(dest - delta); - vp.translationY(dest); - break; - } + + switch (orientation) { + case 0: + dest = v.getX(); + v.setX((dest - delta) * sign); + vp.translationX(dest); + break; + case 90: + dest = v.getY(); + v.setY((dest + delta) * sign); + vp.translationY(dest); + break; + case 180: + dest = v.getX(); + v.setX((dest + delta) * sign); + vp.translationX(dest); + break; + case 270: + dest = v.getY(); + v.setY((dest - delta) * sign); + vp.translationY(dest); + break; } vp.setDuration(ANIMATION_DURATION).start(); @@ -383,13 +343,9 @@ public class VideoMenu extends MenuController return; mPreviewMenuStatus = PREVIEW_MENU_IN_ANIMATION; - ViewPropertyAnimator vp = v.animate(); - if (View.LAYOUT_DIRECTION_RTL == TextUtils - .getLayoutDirectionFromLocale(Locale.getDefault())) { - vp.translationXBy(v.getWidth()).setDuration(ANIMATION_DURATION); - } else { - vp.translationXBy(-v.getWidth()).setDuration(ANIMATION_DURATION); - } + ViewPropertyAnimator vp = v.animate() + .translationXBy(v.getWidth() * (mUI.isRtl() ? -1 : 1)) + .setDuration(ANIMATION_DURATION); vp.setListener(new AnimatorListener() { @Override public void onAnimationStart(Animator animation) { @@ -420,23 +376,20 @@ public class VideoMenu extends MenuController || mPopupStatus == POPUP_IN_ANIMATION_SLIDE || mPopupStatus == POPUP_IN_ANIMATION_FADE) return false; - if (mUI.getMenuLayout() == null) - return false; - Rect rec = new Rect(); - mUI.getMenuLayout().getChildAt(0).getHitRect(rec); - return rec.contains((int) ev.getX(), (int) ev.getY()); + return isOverView(mUI.getMenuLayout(), ev); } public boolean isOverPreviewMenu(MotionEvent ev) { if (mPreviewMenuStatus != PREVIEW_MENU_ON) return false; - if (mUI.getPreviewMenuLayout() == null) + return isOverView(mUI.getPreviewMenuLayout(), ev); + } + + private boolean isOverView(View view, MotionEvent ev) { + if (view == null) return false; - Rect rec = new Rect(); - mUI.getPreviewMenuLayout().getChildAt(0).getHitRect(rec); - rec.top += (int) mUI.getPreviewMenuLayout().getY(); - rec.bottom += (int) mUI.getPreviewMenuLayout().getY(); - return rec.contains((int) ev.getX(), (int) ev.getY()); + view.getHitRect(mTmpRect); + return mTmpRect.contains((int) ev.getX(), (int) ev.getY()); } public boolean isMenuBeingShown() { @@ -523,9 +476,8 @@ public class VideoMenu extends MenuController addFilterMode(); ViewGroup menuLayout = mUI.getPreviewMenuLayout(); if (menuLayout != null) { - View view = menuLayout.getChildAt(0); mUI.adjustOrientation(); - animateSlideIn(view, previewMenuSize, false); + animateSlideIn(menuLayout, previewMenuSize, false); } } }); @@ -605,24 +557,14 @@ public class VideoMenu extends MenuController ImageView imageView = (ImageView) layout2.findViewById(R.id.image); final int j = i; - layout2.setOnTouchListener(new View.OnTouchListener() { - private long startTime; - + layout2.setOnClickListener(new View.OnClickListener() { @Override - public boolean onTouch(View v, MotionEvent event) { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - startTime = System.currentTimeMillis(); - } else if (event.getAction() == MotionEvent.ACTION_UP) { - if (System.currentTimeMillis() - startTime < CLICK_THRESHOLD) { - pref.setValueIndex(j); - for (View v1 : views) { - v1.setActivated(v1 == v); - } - onSettingChanged(pref); - } - + public void onClick(View v) { + pref.setValueIndex(j); + for (View v1 : views) { + v1.setActivated(v1 == v); } - return true; + onSettingChanged(pref); } }); diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java index 30ecffbad..c28fcca82 100644 --- a/src/com/android/camera/VideoUI.java +++ b/src/com/android/camera/VideoUI.java @@ -697,13 +697,14 @@ public class VideoUI implements PieRenderer.PieListener, } public boolean sendTouchToPreviewMenu(MotionEvent ev) { + ev.offsetLocation(-mPreviewMenuLayout.getLeft(), -mPreviewMenuLayout.getTop()); return mPreviewMenuLayout.dispatchTouchEvent(ev); } public boolean sendTouchToMenu(MotionEvent ev) { if (mMenuLayout != null) { - View v = mMenuLayout.getChildAt(0); - return v.dispatchTouchEvent(ev); + ev.offsetLocation(-mMenuLayout.getLeft(), -mMenuLayout.getTop()); + return mMenuLayout.dispatchTouchEvent(ev); } return false; } @@ -731,7 +732,6 @@ public class VideoUI implements PieRenderer.PieListener, } public void showPopup(ListView popup, int level, boolean animate) { - FrameLayout.LayoutParams layoutParams; hideUI(); popup.setVisibility(View.VISIBLE); @@ -739,16 +739,9 @@ public class VideoUI implements PieRenderer.PieListener, if (mMenuLayout == null) { mMenuLayout = new RotateLayout(mActivity, null); mMenuLayout.setRootView(mRootView); - if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) { - layoutParams = new FrameLayout.LayoutParams( - CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT, - Gravity.LEFT | Gravity.TOP); - } else { - layoutParams = new FrameLayout.LayoutParams( - CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT, - Gravity.RIGHT | Gravity.TOP); - } - mMenuLayout.setLayoutParams(layoutParams); + mMenuLayout.setLayoutParams(new FrameLayout.LayoutParams( + CameraActivity.SETTING_LIST_WIDTH_1, LayoutParams.WRAP_CONTENT, + Gravity.START | Gravity.TOP)); mRootView.addView(mMenuLayout); } mMenuLayout.addView(popup); @@ -763,15 +756,6 @@ public class VideoUI implements PieRenderer.PieListener, mRootView.addView(mSubMenuLayout); } - if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) { - layoutParams = new FrameLayout.LayoutParams( - CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT, - Gravity.LEFT | Gravity.TOP); - } else { - layoutParams = new FrameLayout.LayoutParams( - CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT, - Gravity.RIGHT | Gravity.TOP); - } final int containerHeight = mRootView.getClientRectForOrientation(mOrientation).height(); @@ -781,10 +765,14 @@ public class VideoUI implements PieRenderer.PieListener, y = Math.max(0, containerHeight - height); } - if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) { - layoutParams.setMargins(CameraActivity.SETTING_LIST_WIDTH_1, y, 0, 0); - } else { + final FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams( + CameraActivity.SETTING_LIST_WIDTH_2, LayoutParams.WRAP_CONTENT, + Gravity.START | Gravity.TOP); + + if (isRtl()) { layoutParams.setMargins(0, y, CameraActivity.SETTING_LIST_WIDTH_1, 0); + } else { + layoutParams.setMargins(CameraActivity.SETTING_LIST_WIDTH_1, y, 0, 0); } mSubMenuLayout.setLayoutParams(layoutParams); @@ -813,6 +801,10 @@ public class VideoUI implements PieRenderer.PieListener, return mPreviewMenuLayout; } + public boolean isRtl() { + return mRootView.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; + } + public void showPopup(AbstractSettingPopup popup) { hideUI(); diff --git a/src/com/android/camera/ui/CameraControls.java b/src/com/android/camera/ui/CameraControls.java index 4a61a7e5b..d7dd713ef 100644 --- a/src/com/android/camera/ui/CameraControls.java +++ b/src/com/android/camera/ui/CameraControls.java @@ -252,8 +252,14 @@ public class CameraControls extends RotatableLayout { int w = r - l; int h = b - t; - asRow(true, w, h, rotation, mMenu,mFrontBackSwitcher, - mFilterModeSwitcher, mSceneModeSwitcher, mHdrSwitcher); + + if (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) { + asRow(true, w, h, rotation, mHdrSwitcher, mSceneModeSwitcher, + mFilterModeSwitcher, mFrontBackSwitcher, mMenu); + } else { + asRow(true, w, h, rotation, mMenu, mFrontBackSwitcher, + mFilterModeSwitcher, mSceneModeSwitcher, mHdrSwitcher); + } center(mAutoHdrNotice, l, t + mSize, r, t + mSize + mAutoHdrNotice.getMeasuredHeight(), -- cgit v1.2.3