標籤:final goto stp null forum ble ret == rri
1,直接回到頂部
recyview.getLinearLayoutManager().scrollToPositionWithOffset(0, 0);
2,慢慢的回到頂部
private void goTop(int currentPoint) {
if (currentPoint >= 0) {
int step = 3;
if (currentPoint % 10 > 1)
step = 10;
if (currentPoint % 5 > 1)
step = 5;
if (currentPoint - step > 0) {
getView().getLinearLayoutManager().scrollToPositionWithOffset(currentPoint - step, 0);
} else {
getView().getLinearLayoutManager().scrollToPositionWithOffset(0, 0);
return;
}
Message msg = Message.obtain();
msg.obj = currentPoint - step;
msg.what = WHAT_DELAYED_GO_TOP;
goTopHandler.sendMessageDelayed(msg, 30);
}
}
private static int WHAT_DELAYED_GO_TOP = 212;
/**
* 解決記憶體流失問題
*/
private final static class GoTopHandler extends Handler {
private SoftReference<IndexForumContentPresenter> softReference;
private GoTopHandler(IndexForumContentPresenter indexFragmentPresenter) {
this.softReference = new SoftReference<>(indexFragmentPresenter);
}
@Override
public void handleMessage(Message msg) {
// 作廢重複調用
if (this.softReference.get() == null)
return;
if (msg.what == WHAT_DELAYED_GO_TOP) { // 切換輪播
// 回調給介面進行切換介面操作
this.softReference.get().goTop((Integer) msg.obj);
}
}
}
2.1慢慢的回到頂部:調用
int firstPosition = recyview.getLinearLayoutManager().findFirstVisibleItemPosition();
goTop(firstPosition);
Android RecyView 滑動置指定位置