项目里有一个功能是根据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的高度,然后根据已划过的view的type去累计计算滑动距离。 在LayoutManager 为LinearLayoutManager并且每个item View的高度一致时,时该方法的返回值即是滑动的距离。
参考文章:点击打开链接
版权声明:本文为yangshaoby原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。