RecyclerView的滚动事件OnScrollListener解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RecyclerView的滚动事件OnScrollListener解析相关的知识,希望对你有一定的参考价值。

参考技术A

列表的滚动一般分为两种:

上面的过程的状态变化如下:

有两种方式可以监听滚动事件:

其中 setOnScrollListener 由于可能出现空指针的风险,已经过时。建议用addOnScrollListener。

OnScrollListener类是个抽象类,有两个方法:

回调的两个变量的含义:
recyclerView: 当前在滚动的RecyclerView
newState: 当前滚动状态.

其中newState有三种值:

回调的三个变量含义:
recyclerView : 当前滚动的view
dx : 水平滚动距离
dy : 垂直滚动距离

dx > 0 时为手指向左滚动, 列表滚动显示右面的内容
dx < 0 时为手指向右滚动, 列表滚动显示左面的内容
dy > 0 时为手指向上滚动, 列表滚动显示下面的内容
dy < 0 时为手指向下滚动, 列表滚动显示上面的内容

例如:
RecyclerView.canScrollVertically(1)的值表示是否能向下滚动, false表示已经滚动到底部
RecyclerView.canScrollVertically(-1)的值表示是否能向上滚动, false表示已经滚动到顶部

如果 当前
第一个可见item的位置 + 当前可见的item个数 >= item的总个数
这样就可以判断出来,是在底部了。

通过
visibleItemCount + pastVisiblesItems) >= totalItemCount
来判断是否是底部。

通过canScrollVertically 来判断

参考:

onscroll 元素滚动事件

window.onscroll=function(){
//页面web标准页面具有dtd 或者说指明了DOCTYPE时使用document.documentElement.scrollTop。
//页面不具有 DTD,或者说没有指定了 DOCTYPE,时,使用 document.body。
var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
console.log(scrollTop);
}






以上是关于RecyclerView的滚动事件OnScrollListener解析的主要内容,如果未能解决你的问题,请参考以下文章

JS - 滚动事件(onscroll)

onscroll 元素滚动事件

运用onscroll事件//滚动窗口滚动条时触发

js的onscroll、scrollTop、scrollHeight及window.scroll

OnScroll 事件离子 2

如何在不将 onscroll 处理程序附加到每个容器的情况下捕获页面上的所有滚动事件