下拉刷新系列二:SmartRefreshLayout 使用總結

1. 概述

基礎使用:Android智能下拉刷新框架-SmartRefreshLayout
GitHub地址https://github.com/scwang90/SmartRefreshLayout
下拉框架

2. 集成步驟

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種設置方式)

  1. 全局Application設置
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);
                }
            });
    }
}
  1. XML佈局文件指定
    <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>
  1. 代碼指定
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));

3. SmartRefreshLayout 注意點
  1. SmartRefreshLayout 沒有使用到:序列化、反序列化、JNI、反射,所以並不需要添加混淆過濾代碼
  2. 常見問題,這個一定記得先看完一遍,避免集成過程中浪費不必要的時間
  3. SmartRefreshLayout自動加載更多,當數據請求完畢在調用finishLoadMore() 方法時,默認會彈出加載完成的白框,若不想彈出
// 獲取Footer引用,調用該方法即可
footer.setFinishDuration(500)  
  1. 集成此下拉刷新控件,屬性很多很多,需要大家靜下心閱讀屬性文檔
  2. 自定義Header和Footer
  3. SmartRefreshLayout自定義上拉刷新效果,一種偷懶的做法:將ClassicFooter裏面的幾個元素通過findViewById找出來進行替換實現自定義Footer的效果
  4. 列表數據請求完,展示“到底了”類似文案,需要設置一個參數:
/**
     * 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文檔還有待完善。

參考
  1. Android智能下拉刷新框架-SmartRefreshLayout
發佈了130 篇原創文章 · 獲贊 25 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章