leeo00 2017-08-17
PtrClassicFrameLayout和SwitchRefreshLayout是两种不同的刷新方式,根据项目实际要求去做
1.布局:
<in.srain.cube.views.ptr.PtrClassicFrameLayout android:id="@+id/mPtrClassicFrameLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:scrollbars="vertical" /> </in.srain.cube.views.ptr.PtrClassicFrameLayout>
2.在build.gradle(app)添加包:
//下拉刷新框架 compile 'in.srain.cube:ultra-ptr:1.0.11'
3.代码:
其中: app:ptr_resistance="1.7":设置下拉的阻尼系数,值越大感觉越难下拉 ptr_ratio_of_header_height_to_refresh:设置超过头部的多少时,释放可以执行刷新操作 ptr_duration_to_close:设置下拉回弹的时间 ptr_duration_to_close_header:设置刷新完成,头部回弹时间,注意和前一个进行区别 ptr_keep_header_when_refresh:设置刷新的时候是否保持头部 ptr_pull_to_fresh:设置下拉过程中执行刷新,我们一般设置为false 当然这几个参数的设置也可以通过代码去实现: // the following are default settings 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);
实现刷新和加载更多效果:
/** * 上啦加载 */ mAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() { @Override public void onLoadMoreRequested() { new Handler().postDelayed(new Runnable() { @Override public void run() { getPresenter().getData(); mAdapter.setNewData(mList); mAdapter.loadMoreComplete(); mAdapter.notifyDataSetChanged(); } }, 2000); } }, mRecyclerView); //下拉刷新 mPtrClassicFrameLayoutFragment3.disableWhenHorizontalMove(true); mPtrClassicFrameLayoutFragment3.setPtrHandler(new PtrHandler() { @Override public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) { return PtrDefaultHandler.checkContentCanBePulledDown(frame, content, header); } @Override public void onRefreshBegin(PtrFrameLayout frame) { mList.clear(); getPresenter().getData(); mPtrClassicFrameLayoutFragment3.refreshComplete(); mAdapter.notifyDataSetChanged(); } });
其中 getPresenter().getData();这个是获取数据,根据实际项目数据获取而改变