项目里有一个功能是根据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的高度一致时,时该方法的返回值即是滑动的距离。
参考文章:点击打开链接
这篇博客介绍了在Android开发中如何获取RecyclerView的滑动距离,适用于LayoutManager为LinearLayoutManager且item视图高度一致的情况,通过这种方法可以实现在滑动时更新其他组件的UI。
1462

被折叠的 条评论
为什么被折叠?



