import
android.content.Context;
import
android.graphics.PointF;
import
android.support.v7.widget.LinearLayoutManager;
import
android.support.v7.widget.LinearSmoothScroller;
import
android.support.v7.widget.RecyclerView;
import
android.util.DisplayMetrics;
/**
* 快速回到RecyclerView 的顶部,不会出现卡顿
*/
public
class
FastScrollManger
extends
LinearLayoutManager {
public
FastScrollLinearLayoutManager(Context context) {
super
(context);
}
public
FastScrollLinearLayoutManager(Context context,
int
orientation,
boolean
reverseLayout) {
super
(context, orientation, reverseLayout);
}
@Override
public
void
smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state,
int
position) {
LinearSmoothScroller linearSmoothScroller =
new
LinearSmoothScroller(recyclerView.getContext()) {
@Override
public
PointF computeScrollVectorForPosition(
int
targetPosition) {
return
FastScrollLinearLayoutManager.
this
.computeScrollVectorForPosition(targetPosition);
}
@Override
protected
float
calculateSpeedPerPixel(DisplayMetrics displayMetrics) {
return
super
.calculateSpeedPerPixel(displayMetrics);
}
@Override
protected
int
calculateTimeForScrolling(
int
dx) {
if
(dx >
3000
) {
dx =
3000
;
}
int
time =
super
.calculateTimeForScrolling(dx);
return
time;
}
};
linearSmoothScroller.setTargetPosition(position);
startSmoothScroll(linearSmoothScroller);
}
}