summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/pageindicators
diff options
context:
space:
mode:
authorJon Miranda <jonmiranda@google.com>2016-10-04 17:29:48 -0700
committerJon Miranda <jonmiranda@google.com>2016-10-05 17:05:37 -0700
commit4b513f392f50606d7945308cdd5469de4d8a278d (patch)
tree780d9ad556dcde16edcd329c3a0d69dcf7d5e951 /src/com/android/launcher3/pageindicators
parentf3e35d93318190f995e6a0fc9d0441ac844b67e4 (diff)
downloadandroid_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.java25
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;