首页 > 移动平台 > 详细

Android RecyView 滑动置指定位置

时间:2018-07-26 14:28:40      阅读:171      评论:0      收藏:0      [点我收藏+]

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 滑动置指定位置

原文:https://www.cnblogs.com/wf-l5201314/p/9371280.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!