当前位置: 移动技术网 > IT编程>移动开发>Android > 支持scrollTo的RecycleView

支持scrollTo的RecycleView

2018年09月12日  | 移动技术网IT编程  | 我要评论

长城哈弗h64s店,热血高校背景音乐,越南歼击机失踪

recycleview内部没有帮我们实现scrollto的方法,不过帮我们实现了scrollby,我们可以通过scrollby自定义一个支持scrollto的recycleview。

public class scrolltorecyclerview extends recyclerview {
    //记录滚动的总距离,类似view中的mscrollx和mscrolly
    private int sx = 0, sy = 0;
    //自己定义的滚动监听接口

    public interface recyclerscrollchangelistener{
        void scrollchange(int y);
    }

    private recyclerscrollchangelistener mscrolllistener = null;

    public scrolltorecyclerview(context context) {
        super(context);
        addscrolllistener();
    }

    public scrolltorecyclerview(context context, @nullable attributeset attrs) {
        super(context, attrs);
        addscrolllistener();
    }

    public scrolltorecyclerview(context context, @nullable attributeset attrs, int defstyle) {
        super(context, attrs, defstyle);
        addscrolllistener();

    }
    //重写scrollto方法,通过内部的scrollby实现scrollto的功能
    @override
    public void scrollto(int x, int y) {
        super.scrollto(x, y);
        //计算滚动的相对距离,通过传进来的x和当前的sx差值就是scrollby需要滚动的值
        scrollby(x - sx, y - sy);
    }
    //添加view的scrolllistener,在view滚动时根据滚动的距离自己计算sx,sy
    private void addscrolllistener(){
        addonscrolllistener(new onscrolllistener() {
            @override
            public void onscrolled(recyclerview recyclerview, int dx, int dy) {
//                oldsx = sx;
//                oldsy = sy
                //因为dx和dy是相对上次的滚动距离,所以通过一开始的累加可以得到总的sx和sy
                sx += dx;
                sy += dy;
                super.onscrolled(recyclerview, dx, dy);
                //此处如果有需要监听滚动变化的话在这回调
                if(mscrolllistener != null){
                    mscrolllistener.scrollchange(sy);
                }
            }
        });
    }
    //设置监听
    public void setrecyclerscrolllistener(recyclerscrollchangelistener scrolllistener) {
        this.mscrolllistener = scrolllistener;
    }
}

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网