Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -198,9 +198,7 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);

if (getScrollProgressCalculator() == null) {
onCreateScrollProgressCalculator();
}
onCreateScrollProgressCalculator();

// synchronize the handle position to the RecyclerView
float scrollProgress = getScrollProgressCalculator().calculateScrollProgress(mRecyclerView);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
*/
public class VerticalScrollBoundsProvider {

private final float mMinimumScrollY;
private final float mMaximumScrollY;
private float mMinimumScrollY;
private float mMaximumScrollY;

public VerticalScrollBoundsProvider(float minimumScrollY, float maximumScrollY) {
mMinimumScrollY = minimumScrollY;
Expand All @@ -20,4 +20,9 @@ public float getMinimumScrollY() {
public float getMaximumScrollY() {
return mMaximumScrollY;
}

public void update(float minimumScrollY, float maximumScrollY) {
mMinimumScrollY = minimumScrollY;
mMaximumScrollY = maximumScrollY;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package xyz.danoz.recyclerviewfastscroller.vertical;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
Expand All @@ -21,8 +22,9 @@
*/
public class VerticalRecyclerViewFastScroller extends AbsRecyclerViewFastScroller implements RecyclerViewScroller {

@Nullable private VerticalScrollProgressCalculator mScrollProgressCalculator;
@Nullable private VerticalScreenPositionCalculator mScreenPositionCalculator;
private VerticalScrollProgressCalculator mScrollProgressCalculator;
private VerticalScreenPositionCalculator mScreenPositionCalculator;
private VerticalScrollBoundsProvider boundsProvider;

public VerticalRecyclerViewFastScroller(Context context) {
this(context, null);
Expand All @@ -34,6 +36,13 @@ public VerticalRecyclerViewFastScroller(Context context, AttributeSet attrs) {

public VerticalRecyclerViewFastScroller(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}

private void init() {
boundsProvider = new VerticalScrollBoundsProvider(mBar.getY(), mBar.getY() + mBar.getHeight() - mHandle.getHeight());
mScrollProgressCalculator = new VerticalLinearLayoutManagerScrollProgressCalculator(boundsProvider);
mScreenPositionCalculator = new VerticalScreenPositionCalculator(boundsProvider);
}

@Override
Expand All @@ -55,10 +64,8 @@ public void moveHandleToPosition(float scrollProgress) {
mHandle.setY(mScreenPositionCalculator.getYPositionFromScrollProgress(scrollProgress));
}

@Override
protected void onCreateScrollProgressCalculator() {
VerticalScrollBoundsProvider boundsProvider =
new VerticalScrollBoundsProvider(mBar.getY(), mBar.getY() + mBar.getHeight() - mHandle.getHeight());
mScrollProgressCalculator = new VerticalLinearLayoutManagerScrollProgressCalculator(boundsProvider);
mScreenPositionCalculator = new VerticalScreenPositionCalculator(boundsProvider);
boundsProvider.update(mBar.getY(), mBar.getY() + mBar.getHeight() - mHandle.getHeight());
}
}