summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2015-08-24 20:30:09 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-08-24 20:30:09 +0000
commit944bfab018a2933a046a5661a244daf605d8d5c7 (patch)
tree7500f2620bac00b0b2903d85b61256dfedfb7511
parentbcbc2ec2cd2673b5fca40f8458f75a7712410dda (diff)
parent51a7d965443373e3a9f4fce1c0895669ed4110bd (diff)
downloadandroid_packages_apps_Trebuchet-944bfab018a2933a046a5661a244daf605d8d5c7.tar.gz
android_packages_apps_Trebuchet-944bfab018a2933a046a5661a244daf605d8d5c7.tar.bz2
android_packages_apps_Trebuchet-944bfab018a2933a046a5661a244daf605d8d5c7.zip
Merge "Making the detached scrollbar catch up faster to the actual scroll position." into ub-launcher3-burnaby
-rw-r--r--src/com/android/launcher3/allapps/AllAppsRecyclerView.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
index 5ec8bb258..1cde7bfc0 100644
--- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
@@ -267,8 +267,18 @@ public class AllAppsRecyclerView extends BaseRecyclerView
int diffScrollY = scrollBarY - thumbScrollY;
if (diffScrollY * dy > 0f) {
// User is scrolling in the same direction the thumb needs to catch up to the
- // current scroll position.
- thumbScrollY += dy < 0 ? Math.max(dy, diffScrollY) : Math.min(dy, diffScrollY);
+ // current scroll position. We do this by mapping the difference in movement
+ // from the original scroll bar position to the difference in movement necessary
+ // in the detached thumb position to ensure that both speed towards the same
+ // position at either end of the list.
+ if (dy < 0) {
+ int offset = (int) ((dy * thumbScrollY) / (float) scrollBarY);
+ thumbScrollY += Math.max(offset, diffScrollY);
+ } else {
+ int offset = (int) ((dy * (availableScrollBarHeight - thumbScrollY)) /
+ (float) (availableScrollBarHeight - scrollBarY));
+ thumbScrollY += Math.min(offset, diffScrollY);
+ }
thumbScrollY = Math.max(0, Math.min(availableScrollBarHeight, thumbScrollY));
mScrollbar.setThumbOffset(scrollBarX, thumbScrollY);
if (scrollBarY == thumbScrollY) {