diff options
| author | Johan Redestig <johan.redestig@sonymobile.com> | 2013-01-22 10:30:55 +0100 |
|---|---|---|
| committer | Johan Redestig <johan.redestig@sonymobile.com> | 2015-03-20 18:30:45 +0000 |
| commit | f989a412f02e394affc146923192de849d36bcaa (patch) | |
| tree | 821f712d49aea4830df9976fc6b5e2f862956d39 /core/java/android/widget/Gallery.java | |
| parent | a4c4c575c793d3ba4847107b15ce3a9dd5395878 (diff) | |
Consider RTL layout in DPAD navigation in Gallery
Since the Gallery view changes direction the key events LEFT and
RIGHT should swap actions.
Change-Id: Iaeb9cce83e138f315f12ea188de142e67a60d574
Diffstat (limited to 'core/java/android/widget/Gallery.java')
| -rw-r--r-- | core/java/android/widget/Gallery.java | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/core/java/android/widget/Gallery.java b/core/java/android/widget/Gallery.java index f7c839f8a1b1..b4a003ab9526 100644 --- a/core/java/android/widget/Gallery.java +++ b/core/java/android/widget/Gallery.java @@ -1210,13 +1210,13 @@ public class Gallery extends AbsSpinner implements GestureDetector.OnGestureList switch (keyCode) { case KeyEvent.KEYCODE_DPAD_LEFT: - if (movePrevious()) { + if (moveDirection(-1)) { playSoundEffect(SoundEffectConstants.NAVIGATION_LEFT); return true; } break; case KeyEvent.KEYCODE_DPAD_RIGHT: - if (moveNext()) { + if (moveDirection(1)) { playSoundEffect(SoundEffectConstants.NAVIGATION_RIGHT); return true; } @@ -1256,18 +1256,12 @@ public class Gallery extends AbsSpinner implements GestureDetector.OnGestureList return super.onKeyUp(keyCode, event); } - boolean movePrevious() { - if (mItemCount > 0 && mSelectedPosition > 0) { - scrollToChild(mSelectedPosition - mFirstPosition - 1); - return true; - } else { - return false; - } - } + boolean moveDirection(int direction) { + direction = isLayoutRtl() ? -direction : direction; + int targetPosition = mSelectedPosition + direction; - boolean moveNext() { - if (mItemCount > 0 && mSelectedPosition < mItemCount - 1) { - scrollToChild(mSelectedPosition - mFirstPosition + 1); + if (mItemCount > 0 && targetPosition >= 0 && targetPosition < mItemCount) { + scrollToChild(targetPosition - mFirstPosition); return true; } else { return false; |
