【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
推荐阅读
- flutter之配置安卓环境的小坑 but Android SDK not found at this location.
- Xamarin Android Activity全屏
- 关于Android开发中获取服务器上数据时报 nullpointexception 的可能原因和解决办法
- 《Android Studio实战 快速高效地构建Android应用》--Git入门
- Android 调试桥 (adb) 是命令行命令--官方拷贝过来的,留作自己查看
- [Leetcode]689.Maximum Sum of 3 Non-Overlapping Subarrays
- 《Android Studio实战 快速高效地构建Android应用》--备忘录实验(1/2)
- Android开发中按钮的语法
- HBuilder 配置android模拟器