计算滑动距离
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
Log.d(TAG,getScollYDistance()+"");
}
});
public int getScollYDistance() {
LinearLayoutManager layoutManager = (LinearLayoutManager) rvHomeHouse.getLayoutManager();
int position = layoutManager.findFirstVisibleItemPosition();
View firstVisiableChildView = layoutManager.findViewByPosition(position);
int itemHeight = firstVisiableChildView.getHeight();
return (position) * itemHeight - firstVisiableChildView.getTop();
}
监听滑动状态
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
switch (newState){
case RecyclerView.SCROLL_STATE_DRAGGING:
Log.d("wangrui","正在拖拽");
break;
case RecyclerView.SCROLL_STATE_IDLE:
Log.d("wangrui","滑动停止");
break;
case RecyclerView.SCROLL_STATE_SETTLING:
Log.d("wangrui","惯性滑动中");
break;
}
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
/*每次滑动必定调用这里*/
}