项目地址https://github.com/liaohuqiu/Android-Ultra-Pull-To-Refresh
该项目只包含下拉刷新,可以包裹任何控件,如果需要添加上拉加载,参看下篇。
引入方法1:直接导入lib库:ptr-lib,可到项目地址下载,然后将lib添加到项目
compile project(':ptr-lib')
方法2:中央库依赖compile 'in.srain.cube:ultra-ptr:1.0.11'
配置有6个参数可配置:
-
阻尼系数默认: 1.7f,越大,感觉下拉时越吃力。
-
触发刷新时移动的位置比例默认,1.2f,移动达到头部高度1.2倍时可触发刷新操作。
-
回弹延时默认 200ms,回弹到刷新高度所用时间
-
头部回弹时间默认1000ms
-
刷新是保持头部默认值 true.
-
下拉刷新 / 释放刷新默认为释放刷新
下拉刷新功能接口,对下拉刷新功能的抽象,包含以下两个方法。
public void onRefreshBegin(final PtrFrameLayout frame)
刷新回调函数,用户在这里写自己的刷新功能实现,处理业务数据的刷新。
public boolean checkCanDoRefresh(final PtrFrameLayout frame, final View content, final View header)
判断是否可以下拉刷新。 UltraPTR 的 Content 可以包含任何内容,用户在这里判断决定是否可以下拉。
例如,如果 Content 是 TextView,则可以直接返回 true,表示可以下拉刷新。
如果 Content 是 ListView,当第一条在顶部时返回 true,表示可以下拉刷新。
如果 Content 是 ScrollView,当滑动到顶部时返回 true,表示可以刷新。
案例示例:此段代码在设置了rvView(RecycleView)相关配置之后之后进行设置即可,
- mPtrFrame.setPtrHandler(new PtrHandler() {
- @Override
- public void onRefreshBegin(PtrFrameLayout frame) {
- // currentPage = 1;
- // mPresenter.start(currentPage,type);
- mPtrFrame.refreshComplete();
- if(currentPage==1){
- mDataList.clear();
- }
- mDataList.addAll(entity.getNewslist());
- mAdapter.notifyDataSetChanged();
- }
-
- @Override
- public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
- return PtrDefaultHandler.checkContentCanBePulledDown(frame, content, header);
- }
- });
- mPtrFrame.setResistance(1.7f);
- mPtrFrame.setRatioOfHeaderHeightToRefresh(1.2f);
- mPtrFrame.setDurationToClose(200);
- mPtrFrame.setDurationToCloseHeader(1000);
- // default is false
- mPtrFrame.setPullToRefresh(false);
- // default is true
- mPtrFrame.setKeepHeaderWhenRefresh(true);
- mPtrFrame.postDelayed(new Runnable() {
- @Override
- public void run() {
- mPtrFrame.autoRefresh();
- }
- }, 100);
2、当下拉刷新中有 ViewPager 时,比如 ListView 上面加个 Banner 广告条,这时候其实是会有滑动冲突的,那么网上搜很多都说要重写 ViewPager 或者 PtrFrameLayout,而且大部分都是达不到效果的,其实细心的你可能会发现,PtrFrameLayout 已经提供好方法来解决这一问题了,只是我们平时比较容易忽略:
好了,只需要这样就能解决冲突了:
ptrFrame.disableWhenHorizontalMove(true);
文/L_Xian(简书作者)
原文链接:http://www.jianshu.com/p/edb2cde8201a
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。