結合上一篇RecyclerView,介紹一個針對列表的下拉和上拉刷新,加載的框架:SmartRefreshLayout.
Android 開源框架 ( 十三 ) RecyclerView
可實現自定義Header/Footer
一.添加依賴
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.4-7' compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.4-7'
二. 布局文件
<com.scwang.smartrefresh.layout.SmartRefreshLayout android:id="@+id/refreshLayout" android:layout_width="match_parent" android:layout_height="match_parent" app:srlEnablePreviewInEditMode="true"> <!--srlAccentColor srlPrimaryColor 將會改變 Header 和 Footer 的主題顏色--> <!--srlEnablePreviewInEditMode 可以開啟和關閉預覽功能--> <com.scwang.smartrefresh.layout.header.ClassicsHeader android:layout_width="match_parent" android:layout_height="wrap_content" app:srlAccentColor="#000" app:srlPrimaryColor="@android:color/white" /> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" 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" app:srlAccentColor="#000" app:srlPrimaryColor="@android:color/white" /> </com.scwang.smartrefresh.layout.SmartRefreshLayout>
app:srlEnablePreviewInEditMode="true" 開啟了預覽功能

三. 使用-上拉,下拉
refreshLayout.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(RefreshLayout refreshlayout) { pageNumber = 1; //刷新數據 } }); refreshLayout.setOnLoadmoreListener(new OnLoadmoreListener() { @Override public void onLoadmore(RefreshLayout refreshlayout) { ++ pageNumber; //加載數據 } });
四.關閉動畫
//關閉刷新 if (refreshLayout != null) { refreshLayout.finishRefresh(200); refreshLayout.finishLoadmore(200); }
五.拓展- 參數屬性介紹
屬性 Attributes
名稱-name | 格式-format | 描述-description |
---|---|---|
srlPrimaryColor | color | 主題顏色 |
srlAccentColor | color | 強調顏色 |
srlReboundDuration | integer | 釋放后回彈動畫時長 |
srlHeaderHeight | dimension | Header的標准高度 |
srlFooterHeight | dimension | Footer的標准高度 |
srlDragRate | float | 顯示拖動高度/真實拖動高度(默認0.5,阻尼效果) |
srlHeaderMaxDragRate | float | Header最大拖動高度/Header標准高度(默認2,要求>=1) |
srlFooterMaxDragRate | float | Footer最大拖動高度/Footer標准高度(默認2,要求>=1) |
srlEnableRefresh | boolean | 是否開啟下拉刷新功能(默認true) |
srlEnableLoadmore | boolean | 是否開啟加上拉加載功能(默認true) |
srlEnableHeaderTranslationContent | boolean | 拖動Header的時候是否同時拖動內容(默認true) |
srlEnableFooterTranslationContent | boolean | 拖動Footer的時候是否同時拖動內容(默認true) |
srlEnablePreviewInEditMode | boolean | 是否在編輯模式時顯示預覽效果(默認true) |
srlDisableContentWhenRefresh | boolean | 是否在刷新的時候禁止內容的一切手勢操作(默認false) |
srlDisableContentWhenLoading | boolean | 是否在加載的時候禁止內容的一切手勢操作(默認false) |
方法 Method
名稱-name | 格式-format | 描述-description |
---|---|---|
setPrimaryColors | colors | 主題\強調顏色 |
setPrimaryColorsId | colors | 主題\強調顏色資源Id |
setReboundDuration | integer | 釋放后回彈動畫時長 |
setHeaderHeight | dimension | Header的標准高度(px/dp 兩個版本) |
setFooterHeight | dimension | Footer的標准高度(px/dp 兩個版本) |
setDragRate | float | 顯示拖動高度/真實拖動高度(默認0.5,阻尼效果) |
setHeaderMaxDragRate | float | Header最大拖動高度/Header標准高度(默認2,要求>=1) |
setFooterMaxDragRate | float | Footer最大拖動高度/Footer標准高度(默認2,要求>=1) |
setEnableRefresh | boolean | 是否開啟下拉刷新功能(默認true) |
setEnableLoadmore | boolean | 是否開啟加上拉加載功能(默認true) |
setEnableHeaderTranslationContent | boolean | 拖動Header的時候是否同時拖動內容(默認true) |
setEnableFooterTranslationContent | boolean | 拖動Footer的時候是否同時拖動內容(默認true) |
setEnableAutoLoadmore | boolean | 是否監聽列表滾動到底部時觸發加載事件 |
setDisableContentWhenRefresh | boolean | 是否在刷新的時候禁止內容的一切手勢操作(默認false) |
setDisableContentWhenLoading | boolean | 是否在加載的時候禁止內容的一切手勢操作(默認false) |
setReboundInterpolator | Interpolator | 設置回彈動畫的插值器 |
setRefreshHeader | RefreshHeader | 設置指定的Header |
setRefreshFooter | RefreshFooter | 設置指定的Footer |
setOnRefreshListener | OnRefreshListener | 設置刷新監聽器 |
setOnLoadmoreListener | OnLoadmoreListener | 設置加載監聽器 |
setOnRefreshLoadmoreListener | OnRefreshLoadmoreListener | 同時設置上面兩個監聽器 |
setOnMultiPurposeListener | OnMultiPurposeListener | 設置多功能監聽器 |
setLoadmoreFinished | boolean | 設置全部數據加載完成,之后不會觸發加載事件 |
finishRefresh | (int delayed) | 完成刷新,結束刷新動畫 |
finishLoadmore | (int delayed) | 完成加載,結束加載動畫 |
getRefreshHeader | RefreshHeader | 獲取Header |
getRefreshFooter | RefreshFooter | 獲取Footer |
getState | RefreshState | 獲取當前狀態 |
isRefreshing | boolean | 是否正在刷新 |
isLoading | boolean | 是否正在加載 |
autoRefresh | (int delayed) | 觸發自動刷新 |
autoLoadmore | (int delayed) | 觸發自動加載 |
參數屬性引用自: SmartRefreshLayout---“智能”下拉刷新布局 感謝原作者!