目的:将feeds的分页加载和下拉刷新,与网络请求关联起来
ListLibRecyclerViewProxy
在this.getRecyclerView().addOnScrollListener中记录事件
recyclerView.computeVerticalScrollOffset() // 已经向下滚动的距离,为0时表示已处于顶部。
recyclerView.computeVerticalScrollExtent() // 显示区域的高度。
recyclerView.computeVerticalScrollRange() // 整体的高度,注意是整体,包括在显示区域之外的。
1.checkWhetherShowNextPage
int notShow = verticalScrollRange - verticalScrollOffset - verticalScrollExtent;
if (verticalScrollOffset > 0 && notShow < verticalScrollExtent) // 有向下滚动,且下面还没展示的内容小于一屏的高度了
内容:1.改变footer的状态为加载中
2.请求feeds接口
3.刷新recyclerView notifyItemRangeInserted
4.继续判断是否触及底部(有可能一页数据不够,还是离底部很近)
2.checkDistanceTop
verticalScrollOffset > verticalScrollExtent // 屏幕上面的部分大于显示区域
内容:显示回顶按钮
补充:
View.getLocationInWindow(int[] location) <-> 一个控件在其父窗口中的坐标位置
View.getLocationOnScreen(int[]location) <-> 一个控件在其整个屏幕上的坐标位置