From 67965f871cc78689da43926a11cfe1068ba51e5c Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Fri, 23 Oct 2015 15:50:46 -0700 Subject: Use simpler position calculation to get rid of jitter --- .../java/github/daneren2005/dsub/view/FastScroller.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'app/src/main/java/github') diff --git a/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java b/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java index e36667d8..bdfde1cf 100644 --- a/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java +++ b/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java @@ -209,17 +209,12 @@ public class FastScroller extends LinearLayout { View firstVisibleView = recyclerView.getChildAt(0); int firstVisiblePosition = recyclerView.getChildPosition(firstVisibleView); int visibleRange = recyclerView.getChildCount(); - int lastVisiblePosition = firstVisiblePosition+visibleRange; int itemCount = recyclerView.getAdapter().getItemCount(); - int position; - if(firstVisiblePosition == 0) - position = 0; - else if(lastVisiblePosition == itemCount) - position = itemCount; - else - position = (int)(((float)firstVisiblePosition/(((float)itemCount-(float)visibleRange)))*(float)itemCount); - float proportion = (float)position/(float)itemCount; - setBubbleAndHandlePosition(height*proportion); + + // Add the percentage of the item the user has scrolled past already + float position = firstVisiblePosition + (-firstVisibleView.getY() / firstVisibleView.getHeight()); + float proportion = position / itemCount; + setBubbleAndHandlePosition(height * proportion); if((visibleRange * 2) < itemCount) { if (!hasScrolled && (dx > 0 || dy > 0)) { -- cgit v1.2.3