基础使用:Android智能下拉刷新框架-SmartRefreshLayout
GitHub地址:https://github.com/scwang90/SmartRefreshLayout
2.1 在 build.gradle 中添加依赖
// 版本 23以上(必须)
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-21'
// 没有使用特殊Header,可以不加这行
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-21'
2.2 在XML布局文件中添加 SmartRefreshLayout(伪代码)
<?xml version="1.0" encoding="utf-8"?>
<com.scwang.smartrefresh.layout.SmartRefreshLayout
......">
<android.support.v7.widget.RecyclerView
...... />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
2.3 在 Activity 或者 Fragment 中添加代码
RefreshLayout refreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(RefreshLayout refreshlayout) {
// 开始刷新时调用
}
});
refreshLayout.setOnLoadmoreListener(new OnLoadmoreListener() {
@Override
public void onLoadmore(RefreshLayout refreshlayout) {
// 开始加载更多一页时调用
// 加载完毕后调用
refreshLayout.finishLoadMore();
}
});
2.4 使用指定的 Header 和 Footer (3种设置方式)
public class App extends Application {
// static 代码段可以防止内存泄露
static {
// 设置全局的Header构建器
SmartRefreshLayout.setDefaultRefreshHeaderCreater(new DefaultRefreshHeaderCreater() {
@Override
public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色
return new ClassicsHeader(context).setSpinnerStyle(SpinnerStyle.Translate);//指定为经典Header,默认是 贝塞尔雷达Header
}
});
//设置全局的Footer构建器
SmartRefreshLayout.setDefaultRefreshFooterCreater(new DefaultRefreshFooterCreater() {
@Override
public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
//指定为经典Footer,默认是 BallPulseFooter
return new ClassicsFooter(context).setSpinnerStyle(SpinnerStyle.Translate);
}
});
}
}
<com.scwang.smartrefresh.layout.SmartRefreshLayout
......>
<!--srlAccentColor srlPrimaryColor 将会改变 Header 和 Footer 的主题颜色-->
<!--srlEnablePreviewInEditMode 可以开启和关闭预览功能-->
<com.scwang.smartrefresh.layout.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
....../>
<com.scwang.smartrefresh.layout.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.smartLayout);
//设置 Header 为 Material风格
refreshLayout.setRefreshHeader(new MaterialHeader(this).setShowBezierWave(true));
//设置 Footer 为 球脉冲
refreshLayout.setRefreshFooter(new BallPulseFooter(this).setSpinnerStyle(SpinnerStyle.Scale));
// 获取Footer引用,调用该方法即可
footer.setFinishDuration(500)
/**
* Set whether or not Footer follows the content after there is no more data.
* 设置是否在没有更多数据之后 Footer 跟随内容
* @param enabled 是否启用
* @return RefreshLayout
*/
@Override
public RefreshLayout setEnableFooterFollowWhenNoMoreData(boolean enabled) {
this.mEnableFooterFollowWhenNoMoreData = enabled;
return this;
}
PS:
前面自己有写过一篇总结第三方下拉刷新库的文章:下拉刷新系列一:Android 框架 下拉刷新,个人感觉SmartRefreshLayout的API文档还有待完善。