安卓项目实战之强大的智能下拉刷新上拉加载框架SmartRefreshLayout

GitHub地址: https://github.com/scwang90/SmartRefreshLayout/tree/master
该库的具体特性参见GitHub官网,此处只讲使用。

使用步骤

1.添加依赖

//1.1.0 API改动过大,老用户升级需谨慎
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-14'//没有使用特殊Header,可以不加这行
compile 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必须)

//1.0.5 当1.1.0出现问题可以回退到1.0.5.1
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'//没有使用特殊Header,可以不加这行
compile 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必须)
compile 'com.android.support:design:25.3.1'//版本随意(非必须,引用可以解决无法预览问题)

2.在XML布局文件中添加 SmartRefreshLayout
此处使用在xml中指定的方式来设置刷新和加载样式,此处使用经典的刷新加载样式也是不指定时的默认样式,指定刷新加载样式有三种方式:
1.application中全局设置
2.xml中设置
3.代码动态设置
三种方式的优先级依此升高,后面方式的设置会覆盖前面的,具体如何设置参见Github中介绍。


    
    
    
    
        
    
        
    
        

该库集成了很多酷炫的刷新和加载样式,要使用我们只需要更改对应的header和footer的类名称即可,具体效果及名称参见官网,
同时也支持自定义,如何自定义参见文档说明:https://github.com/scwang90/SmartRefreshLayout/blob/master/art/md_custom.md

3.在 Activity 或者 Fragment 中添加代码

RefreshLayout refreshLayout = (RefreshLayout)findViewById(R.id.refreshLayout);
refreshLayout.setOnRefreshListener(new OnRefreshListener() {
    @Override
    public void onRefresh(RefreshLayout refreshlayout) {
        refreshlayout.finishRefresh();//刷新完成
    }
});
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
    @Override
    public void onLoadMore(RefreshLayout refreshlayout) {
        refreshlayout.finishLoadMore();//加载完成
    }
});

还有一个方法需要注意,引用该第三方库时,在调用finishLoadMore() 方法时,默认会弹出 加载完成的白框,如果不想弹出这个白框,可以使用下面的方法:

footer.setFinishDuration(500)//参数很明显是时间参数,将参数设为0,就没用白框了

常用的用法

    /*
       这几个方法是比较重要的
    */
    refreshLayout.autoRefresh(); //自动刷新
    refreshLayout.autoLoadMore(); //自动加载更多
    // 这两个方法是在加载成功并且还有数据的情况下调用的    
    refreshLayout.finishRefresh();//结束刷新                                         
    refreshLayout.finishLoadMore();//结束加载
    // 这两个方法是在加载失败时调用的
    refreshLayout.finishRefresh(false);//结束刷新(刷新失败)
    refreshLayout.finishLoadMore(false);//结束加载(加载失败)
    // 这个方法是在最后一页,没有更多数据时调用的,会在页面底部标记没有更多数据 
    refreshLayout.finishLoadMoreWithNoMoreData();//完成加载并标记没有更多数据 1.0.4
    // 这个方法最重要,当在最后一页调用完上一个完成加载并标记没有更多数据的方法时,需要将refreshLayout的状态更改为还有更多数据的状态,此时就需要调用此方法,参数为false代表还有更多数据,true代表没有更多数据
    refreshLayout.setNoMoreData(false);//恢复没有更多数据的原始状态 1.0.5


    // 这里需要注意这几个结束加载和结束刷新的方法,分好几种使用的情况,可以在不同的情况下使用
    /**
     * 完成刷新
     * @return RefreshLayout
     */
    RefreshLayout finishRefresh();

    /**
     * 完成刷新
     * @param delayed 开始延时
     * @return RefreshLayout
     */
    RefreshLayout finishRefresh(int delayed);

    /**
     * 完成加载
     * @param success 数据是否成功刷新 (会影响到上次更新时间的改变)
     * @return RefreshLayout
     */
    RefreshLayout finishRefresh(boolean success);

    /**
     * 完成刷新
     * @param delayed 开始延时
     * @param success 数据是否成功刷新 (会影响到上次更新时间的改变)
     * @return RefreshLayout
     */
    RefreshLayout finishRefresh(int delayed, boolean success);

    /**
     * 完成加载
     * @return RefreshLayout
     */
    RefreshLayout finishLoadMore();

    /**
     * 完成加载
     * @param delayed 开始延时
     * @return RefreshLayout
     */
    RefreshLayout finishLoadMore(int delayed);

    /**
     * 完成加载
     * @param success 数据是否成功
     * @return RefreshLayout
     */
    RefreshLayout finishLoadMore(boolean success);

    /**
     * 完成加载
     * @param delayed 开始延时
     * @param success 数据是否成功
     * @param noMoreData 是否有更多数据
     * @return RefreshLayout
     */
    RefreshLayout finishLoadMore(int delayed, boolean success, boolean noMoreData);

    /**
     * 完成加载并标记没有更多数据
     * @return RefreshLayout
     */
    RefreshLayout finishLoadMoreWithNoMoreData(); 

SmartRefreshLayout中的属性讲解

 
 
 
 
 
 
 
 
 
 
 
 

 
       
       
       
 
	  
 
       
       
       
       
       
 

 
             
	    
	    
	    
	    
	   
	   
	    
	    
	    
	    
	    
	    
	    
	    
	    
	   
	   
	    
	   
	   
	   
	   
	    
	    
	   
	   
	   
	   
	   
	    
	    
	   
	   

https://www.jianshu.com/p/7479b6ed5ebf

你可能感兴趣的:(安卓项目实战系列,Android)