项目里有一个功能是根据RecyclerView的滑动距离来刷新一些组件的UI,搜了一下常用的方法,记录一个比较靠谱的办法:
public int getScollYDistance() {
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
int position = layoutManager.findFirstVisibleItemPosition();
View firstVisiableChildView = layoutManager.findViewByPosition(position);
int itemHeight = firstVisiableChildView.getHeight();
return (position) * itemHeight - firstVisiableChildView.getTop();
}
这个方法使用position * 该position的view高度 来计算已经滑动的距离,其实是默认了每个被划过的item view的高度是一致的,有点偷懒之嫌,不过假如我们项目中每个item View的高度确实一致的,直接这么使用也无妨,在每个item view 高度不一致的情况下,可以通过记录每种type的view的高度,然后根据