讲讲一个巨好用的刷新框架 --- SmartRefreshLayout

今天偶然发现一个超好用的刷新框架–SmartRefreshLayout,它以打造一个强大,稳定,成熟的下拉刷新框架为目标,并集成各种的炫酷、多样、实用、美观的Header和Footer,首先要感谢大佬,源github地址:https://github.com/scwang90/SmartRefreshLayout

配置

 implementation 'androidx.appcompat:appcompat:1.0.0'                 //必须 1.0.0 以上
    implementation  'com.scwang.smart:refresh-layout-kernel:2.0.1'      //核心必须依赖
    implementation  'com.scwang.smart:refresh-header-classics:2.0.1'    //经典刷新头
    implementation  'com.scwang.smart:refresh-header-radar:2.0.1'       //雷达刷新头
    implementation  'com.scwang.smart:refresh-header-falsify:2.0.1'     //虚拟刷新头
    implementation  'com.scwang.smart:refresh-header-material:2.0.1'    //谷歌刷新头
    implementation  'com.scwang.smart:refresh-header-two-level:2.0.1'   //二级刷新头
    implementation  'com.scwang.smart:refresh-footer-ball:2.0.1'        //球脉冲加载
    implementation  'com.scwang.smart:refresh-footer-classics:2.0.1'    //经典加载

并在 gradle.properties 中添加

android.useAndroidX=true
android.enableJetifier=true

在XML布局文件中添加 SmartRefreshLayout



    
    
    

在 Activity 或者 Fragment 中添加代码

RefreshLayout refreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
refreshLayout.setRefreshHeader(new ClassicsHeader(this));
refreshLayout.setRefreshFooter(new ClassicsFooter(this));
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
    @Override
    public void onRefresh(RefreshLayout refreshlayout) {
        refreshlayout.finishRefresh(2000/*,false*/);//传入false表示刷新失败
    }
});
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
    @Override
    public void onLoadMore(RefreshLayout refreshlayout) {
        refreshlayout.finishLoadMore(2000/*,false*/);//传入false表示加载失败
    }
});

代码设置Header和Footer
代码中设置样式,优先级最高

final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
//设置 Header 为 贝塞尔雷达 样式
refreshLayout.setRefreshHeader(new BezierRadarHeader(this).setEnableHorizontalDrag(true));
//设置 Footer 为 球脉冲 样式
refreshLayout.setRefreshFooter(new BallPulseFooter(this).setSpinnerStyle(SpinnerStyle.Scale));

全局设置样式

public class App extends Application {
    //static 代码段可以防止内存泄露
    static {
        //设置全局的Header构建器
        SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
                @Override
                public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
                    layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色
                    return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header
                }
            });
        //设置全局的Footer构建器
        SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
                @Override
                public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
                    //指定为经典Footer,默认是 BallPulseFooter
                    return new ClassicsFooter(context).setDrawableSize(20);
                }
            });
    }
}

还有一些经常用到的属性

  refreshLayout.setEnableRefresh(true);//是否启用下拉刷新功能
  refreshLayout.setEnableLoadMore(false);//是否启用上拉加载功能
  refreshLayout.setEnableAutoLoadMore(true);//是否启用列表惯性滑动到底部时自动加载更多
 refreshLayout.autoRefresh();//自动刷新
 refreshLayout.autoLoadMore();//自动加载
 refreshLayout.autoRefresh(400);//延迟400毫秒后自动刷新
 refreshLayout.autoLoadMore(400);//延迟400毫秒后自动加载
 refreshLayout.finishRefresh();//结束刷新
 refreshLayout.finishLoadMore();//结束加载
 refreshLayout.setDisableContentWhenRefresh(false);//是否在刷新的时候禁止列表的操作
 refreshLayout.setDisableContentWhenLoading(false);//是否在加载的时候禁止列表的操作
 refreshLayout.finishLoadMoreWithNoMoreData();//完成加载并标记没有更多数据

你可能感兴趣的:(讲讲一个巨好用的刷新框架 --- SmartRefreshLayout)