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/VideoMenu.java | 172 +++++++++++----------------------- 1 file changed, 57 insertions(+), 115 deletions(-) (limited to 'src/com/android/camera/VideoMenu.java') 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); } }); -- cgit v1.2.3