Android教程2020 - RecyclerView获取滑动距离

【Android教程2020 - RecyclerView获取滑动距离】将相本无种,男儿当自强。这篇文章主要讲述Android教程2020 - RecyclerView获取滑动距离相关的知识,希望能为你提供帮助。
获取RecyclerView滑动的距离。
Android教程2020 - 系列总览
本文链接
前面我们已经用RecyclerView显示一些数据。
本文演示如何获取RecyclerView的滑动距离。
要实现这个功能,需要给RecyclerView添加滑动时监听RecyclerView.OnScrollListener

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); }@Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { Log.d(TAG, " onScrolled: dy: " + dy); } });

RecyclerView.OnScrollListener是一个抽象类,我们可以选择性地实现它的方法。
onScrolled方法的dy表示的是每一次y方向上的相对滑动距离。向下滑动是正数,向上滑动是负数。
可以添加一个变量来累计滑动的距离。
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { int mmRvScrollY = 0; // 列表滑动距离@Override public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); }@Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { mmRvScrollY += dy; Log.d(TAG, " onScrolled: mmRvScrollY: " + mmRvScrollY + " , dy: " + dy); } });

每次滑动都累加到mmRvScrollY中。
打印log
onScrolled: mmRvScrollY: 3167, dy: 3 onScrolled: mmRvScrollY: 3169, dy: 2 onScrolled: mmRvScrollY: 3167, dy: -2 onScrolled: mmRvScrollY: 3155, dy: -12

建议同时给adapter加个registerAdapterDataObserver,监听插入/删除/移动,自己加减前面记录的dy滚动值。
工程放这里: https://github.com/AnRFDev/Tutorial2020
相关阅读
RecyclerView - 使用入门
RecyclerView点击事件 - 如何设置点击事件
RecyclerView示例 - 实际使用
RecyclerView显示多种item

    推荐阅读