首先贴下github地址
https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh
其次说明
我们使用其中的in.srain.cube.views.ptr.PtrFrameLayout 效率是最高的,不推荐使用它的经典布局。
实现思路》》》
1 声明布局,布局为PtrFrameLayout,内部可以包含一个任意视图
2.设置PtrUIHandler(下拉刷新的布局),默认的有StoreHouseHeader(文字的效果很好看),还有一个PtrClassicHeader(最经典的下拉刷新),可以自定义布局的。
3.设置PtrHandler , 对下拉刷新生命周期的监听
tip:PTRHandler内部有一个checkCanDoRefresh()的实现方法,表示当前是否可以通过下拉来显示下拉刷新的效果。
所以我们需要监听Listview 或者 RecycleView 的滑动到顶部的事件来改变checkCanDoRefresh的返回值
怎么监听?Listview和RecycleView是一样的
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(scrollState == SCROLL_STATE_IDLE){
View first = view.getChildAt(0);
if(first.getTop()==0){
candoPull = true;
//在顶部
}else{
candoPull = false;
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
ScrollView需要判断getScrollY()就OK了,
😄 是不是很简单