框架:
SmartRefreshLayout是目前为止笔者用过的嘴方便的刷新加载组件,它对下拉刷新功能进行系统的拆分、组合,主要由四个部分组成:
- RefreshLayout 下拉的基本功能,包括布局测量、滑动事件处理、参数设定等等
- RefreshContent 对不同内容的统一封装,包括判断是否可滚动、回弹判断、智能识别
- RefreshHeader 下拉头部的实现和显示
- RefreshFooter 上拉底部的实现和显示
UML关系类图:
通过SmartRefreshLayout框架,你可以在一个稳定强大的下拉布局中实现自己项目需求的 Header ,不用去关心滑动事件处理,不用关心子控件的回弹和滚动边界,只需关注自己真正的项目需求Header的样子和动画。
使用方法:
- 在xml中不居中部署:
<LinearLayout
android:background="#f2f2f2"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/refreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.scwang.smartrefresh.layout.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.scwang.smartrefresh.layout.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</LinearLayout>
- 在java中获取RefreashLayout实例
refreshLayout=findViewById(R.id.refreshLayout);
- 初始化RefreashLayout
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(RefreshLayout refreshlayout) {
mPresenter.loadNextMessage("refresh",bean.getId());
}
});
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
mPresenter.loadNextMessage("loadmore",bean.getId());
}
});
refreshLayout.autoRefresh();
网友评论