summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2016-04-19 11:28:06 +0200
committerDanny Baumann <dannybaumann@web.de>2016-04-25 10:41:08 +0200
commit3790102575878c57f1fd47260fa03eaa6ff71798 (patch)
tree7aa2370edd50b19a41bfd9ecf123ab21e6640294
parent1f7404e8d825878afef2b4c38e30470ac95e9ba5 (diff)
downloadandroid_packages_apps_Snap-3790102575878c57f1fd47260fa03eaa6ff71798.tar.gz
android_packages_apps_Snap-3790102575878c57f1fd47260fa03eaa6ff71798.tar.bz2
android_packages_apps_Snap-3790102575878c57f1fd47260fa03eaa6ff71798.zip
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
-rw-r--r--src/com/android/camera/PhotoMenu.java202
-rw-r--r--src/com/android/camera/PhotoUI.java41
-rw-r--r--src/com/android/camera/PreviewGestures.java13
-rw-r--r--src/com/android/camera/VideoMenu.java172
-rw-r--r--src/com/android/camera/VideoUI.java42
-rw-r--r--src/com/android/camera/ui/CameraControls.java10
6 files changed, 173 insertions, 307 deletions
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(),