diff options
author | Jon Miranda <jonmiranda@google.com> | 2016-10-04 17:29:48 -0700 |
---|---|---|
committer | Jon Miranda <jonmiranda@google.com> | 2016-10-05 17:05:37 -0700 |
commit | 4b513f392f50606d7945308cdd5469de4d8a278d (patch) | |
tree | 780d9ad556dcde16edcd329c3a0d69dcf7d5e951 /src/com/android/launcher3/pageindicators | |
parent | f3e35d93318190f995e6a0fc9d0441ac844b67e4 (diff) | |
download | android_packages_apps_Trebuchet-4b513f392f50606d7945308cdd5469de4d8a278d.tar.gz android_packages_apps_Trebuchet-4b513f392f50606d7945308cdd5469de4d8a278d.tar.bz2 android_packages_apps_Trebuchet-4b513f392f50606d7945308cdd5469de4d8a278d.zip |
Fix page indicator bug where it gets stuck as a blue line.
Bug: 31909035
Change-Id: I4cdda057807476c1c5ec454fd17dbfa9f0ed5111
Diffstat (limited to 'src/com/android/launcher3/pageindicators')
-rw-r--r-- | src/com/android/launcher3/pageindicators/PageIndicatorDots.java | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java index fb9d2f7fe..12a67014d 100644 --- a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java +++ b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java @@ -80,7 +80,7 @@ public class PageIndicatorDots extends PageIndicator { @Override public void onAnimationEnd(Animator animation) { mAnimator = null; - animateToPostion(mFinalPosition); + animateToPosition(mFinalPosition); } }; @@ -136,22 +136,25 @@ public class PageIndicatorDots extends PageIndicator { currentScroll = totalScroll - currentScroll; } int scrollPerPage = totalScroll / (mNumPages - 1); - int absScroll = mActivePage * scrollPerPage; - float scrollThreshold = SHIFT_THRESHOLD * scrollPerPage; + int pageToLeft = currentScroll / scrollPerPage; + int pageToLeftScroll = pageToLeft * scrollPerPage; + int pageToRightScroll = pageToLeftScroll + scrollPerPage; - if ((absScroll - currentScroll) > scrollThreshold) { - // current scroll is before absolute scroll - animateToPostion(mActivePage - SHIFT_PER_ANIMATION); - } else if ((currentScroll - absScroll) > scrollThreshold) { - // current scroll is ahead of absolute scroll - animateToPostion(mActivePage + SHIFT_PER_ANIMATION); + float scrollThreshold = SHIFT_THRESHOLD * scrollPerPage; + if (currentScroll < pageToLeftScroll + scrollThreshold) { + // scroll is within the left page's threshold + animateToPosition(pageToLeft); + } else if (currentScroll > pageToRightScroll - scrollThreshold) { + // scroll is far enough from left page to go to the right page + animateToPosition(pageToLeft + 1); } else { - animateToPostion(mActivePage); + // scroll is between left and right page + animateToPosition(pageToLeft + SHIFT_PER_ANIMATION); } } } - private void animateToPostion(float position) { + private void animateToPosition(float position) { mFinalPosition = position; if (Math.abs(mCurrentPosition - mFinalPosition) < SHIFT_THRESHOLD) { mCurrentPosition = mFinalPosition; |