初探SmartRefreshLayout

簡(jiǎn)介

SmartRefreshLayout是一個(gè)“聰明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的View,還支持多層嵌套的視圖結(jié)構(gòu)。它繼承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。 也吸取了現(xiàn)在流行的各種刷新布局的優(yōu)點(diǎn),包括谷歌官方的 SwipeRefreshLayout,其他第三方的 Ultra-Pull-To-RefreshTwinklingRefreshLayout 。還集成了各種炫酷的 Header 和 Footer。 SmartRefreshLayout的目標(biāo)是打造一個(gè)強(qiáng)大,穩(wěn)定,成熟的下拉刷新框架,并集成各種的炫酷、多樣、實(shí)用、美觀的Header和Footer。

使用

1.效果

2.依賴

//1.1.0 API改動(dòng)過(guò)大,老用戶升級(jí)需謹(jǐn)慎
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-14'//沒(méi)有使用特殊Header,可以不加這行

//1.0.5 當(dāng)1.1.0出現(xiàn)問(wèn)題可以回退到1.0.5.1
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'//沒(méi)有使用特殊Header,可以不加這行
compile 'com.android.support:design:25.3.1'//版本隨意(非必須,引用可以解決無(wú)法預(yù)覽問(wèn)題)

3.xml

<?xml version="1.0" encoding="utf-8"?>
<com.scwang.smartrefresh.layout.SmartRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/refreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.scwang.smartrefresh.layout.header.ClassicsHeader
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#fff"
            android:overScrollMode="never" />
    <com.scwang.smartrefresh.layout.footer.ClassicsFooter
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>

其中ClassicsHeader是自帶頭部樣式, ClassicsFooter是自帶底部樣式, 可自定義.

自定義Header和Foote
4.監(jiān)聽

mRefreshLayout.setOnRefreshListener(new OnRefreshListener() { //下拉刷新
            @Override
            public void onRefresh(RefreshLayout refreshlayout) {
                refreshlayout.finishRefresh(2000/*,false*/);//傳入false表示刷新失敗
            }
        });
 
mRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { //上拉加載更多
            @Override
            public void onLoadMore(RefreshLayout refreshlayout) {
                refreshlayout.finishLoadMore(2000/*,false*/);//傳入false表示加載失敗
            }
        });

關(guān)閉刷新和下拉功能

mRefreshLayout.setEnableRefresh(false);
mRefreshLayout.setEnableLoadMore(false);

屬性表格

Attributes

name format description
srlPrimaryColor color 主題顏色
srlAccentColor color 強(qiáng)調(diào)顏色
srlReboundDuration integer 釋放后回彈動(dòng)畫時(shí)長(zhǎng)(默認(rèn)250毫秒)
srlHeaderHeight dimension Header的標(biāo)準(zhǔn)高度(dp)
srlFooterHeight dimension Footer的標(biāo)準(zhǔn)高度(dp)
srlHeaderInsetStart dimension Header的起始偏移量(dp)V1.0.5
srlFooterInsetStart dimension Footer的起始偏移量(dp)V1.0.5
srlDragRate float 顯示拖動(dòng)高度/真實(shí)拖動(dòng)高度(默認(rèn)0.5,阻尼效果)
srlHeaderMaxDragRate float Header最大拖動(dòng)高度/Header標(biāo)準(zhǔn)高度(默認(rèn)2,要求>=1)
srlFooterMaxDragRate float Footer最大拖動(dòng)高度/Footer標(biāo)準(zhǔn)高度(默認(rèn)2,要求>=1)
srlHeaderTriggerRate float Header觸發(fā)刷新距離 與 HeaderHeight 的比率(默認(rèn)1)
srlFooterTriggerRate float Footer觸發(fā)加載距離 與 FooterHeight 的比率(默認(rèn)1)
srlEnableRefresh boolean 是否開啟下拉刷新功能(默認(rèn)true)
srlEnableLoadMore boolean 是否開啟加上拉加載功能(默認(rèn)false-智能開啟)
srlEnableAutoLoadMore boolean 是否監(jiān)聽列表慣性滾動(dòng)到底部時(shí)觸發(fā)加載事件(默認(rèn)true)
srlEnableHeaderTranslationContent boolean 拖動(dòng)Header的時(shí)候是否同時(shí)拖動(dòng)內(nèi)容(默認(rèn)true)
srlEnableFooterTranslationContent boolean 拖動(dòng)Footer的時(shí)候是否同時(shí)拖動(dòng)內(nèi)容(默認(rèn)true)
srlEnablePreviewInEditMode boolean 是否在編輯模式時(shí)顯示預(yù)覽效果(默認(rèn)true)
srlEnablePureScrollMode boolean 是否開啟純滾動(dòng)模式(默認(rèn)false-開啟時(shí)只支持一個(gè)子視圖)
srlEnableOverScrollDrag boolean 是否啟用越界拖動(dòng)(仿蘋果效果)V1.0.4
srlEnableOverScrollBounce boolean 設(shè)置是否開啟越界回彈功能(默認(rèn)true)
srlEnableNestedScrolling boolean 是否開啟嵌套滾動(dòng)NestedScrolling(默認(rèn)false-智能開啟)
srlEnableScrollContentWhenLoaded boolean 是否在加載完成之后滾動(dòng)內(nèi)容顯示新數(shù)據(jù)(默認(rèn)-true)
srlEnableScrollContentWhenRefreshed boolean 是否在刷新成功之后滾動(dòng)內(nèi)容顯示新數(shù)據(jù)(默認(rèn)-true)
srlEnableLoadMoreWhenContentNotFull boolean 在內(nèi)容不滿一頁(yè)的時(shí)候,是否可以上拉加載更多(默認(rèn)-false)
srlEnableFooterFollowWhenLoadFinished boolean 是否在全部加載結(jié)束之后Footer跟隨內(nèi)容
srlEnableClipHeaderWhenFixedBehind boolean 是否剪裁Header當(dāng)時(shí)樣式為FixedBehind時(shí)V1.0.5
srlEnableClipFooterWhenFixedBehind boolean 是否剪裁Footer當(dāng)時(shí)樣式為FixedBehind時(shí)V1.0.5
srlDisableContentWhenRefresh boolean 是否在刷新的時(shí)候禁止內(nèi)容的一切手勢(shì)操作(默認(rèn)false)
srlDisableContentWhenLoading boolean 是否在加載的時(shí)候禁止內(nèi)容的一切手勢(shì)操作(默認(rèn)false)
srlFixedHeaderViewId id 指定固定頂部的視圖Id
srlFixedFooterViewId id 指定固定底部的視圖Id
srlHeaderTranslationViewId id 指定下拉Header時(shí)偏移的視圖Id
srlFooterTranslationViewId id 指定上拉Footer時(shí)偏移的視圖Id

Method

name format description
setPrimaryColors colors 主題\強(qiáng)調(diào)顏色
setPrimaryColorsId colors 主題\強(qiáng)調(diào)顏色資源Id
setReboundDuration integer 釋放后回彈動(dòng)畫時(shí)長(zhǎng)(默認(rèn)250毫秒)
setHeaderHeight dimension Header的標(biāo)準(zhǔn)高度(px/dp 兩個(gè)版本)
setFooterHeight dimension Footer的標(biāo)準(zhǔn)高度(px/dp 兩個(gè)版本)
setHeaderInsetStart dimension Header起始位置偏移量(px/dp 兩個(gè)版本)V1.0.5
setFooterInsetStart dimension Footer起始位置偏移量(px/dp 兩個(gè)版本)V1.0.5
setDragRate float 顯示拖動(dòng)高度/真實(shí)拖動(dòng)高度(默認(rèn)0.5,阻尼效果)
setHeaderMaxDragRate float Header最大拖動(dòng)高度/Header標(biāo)準(zhǔn)高度(默認(rèn)2,要求>=1)
setFooterMaxDragRate float Footer最大拖動(dòng)高度/Footer標(biāo)準(zhǔn)高度(默認(rèn)2,要求>=1)
setHeaderTriggerRate float Header觸發(fā)刷新距離 與 HeaderHeight 的比率(默認(rèn)1)
setFooterTriggerRate float Footer觸發(fā)加載距離 與 FooterHeight 的比率(默認(rèn)1)
setEnableRefresh boolean 是否開啟下拉刷新功能(默認(rèn)true)
setEnableLoadMore boolean 是否開啟加上拉加載功能(默認(rèn)false-智能開啟)
setEnableHeaderTranslationContent boolean 拖動(dòng)Header的時(shí)候是否同時(shí)拖動(dòng)內(nèi)容(默認(rèn)true)
setEnableFooterTranslationContent boolean 拖動(dòng)Footer的時(shí)候是否同時(shí)拖動(dòng)內(nèi)容(默認(rèn)true)
setEnableAutoLoadMore boolean 是否監(jiān)聽列表慣性滾動(dòng)到底部時(shí)觸發(fā)加載事件(默認(rèn)true)
setEnablePureScrollMode boolean 是否開啟純滾動(dòng)模式(默認(rèn)false-開啟時(shí)只支持一個(gè)子視圖)
setEnableOverScrollDrag boolean 是否啟用越界拖動(dòng)(仿蘋果效果)V1.0.4
setEnableOverScrollBounce boolean 設(shè)置是否開啟越界回彈功能(默認(rèn)true)
setEnableNestedScrolling boolean 是否開啟嵌套滾動(dòng)NestedScrolling(默認(rèn)false-智能開啟)
setEnableScrollContentWhenLoaded boolean 是否在加載完成之后滾動(dòng)內(nèi)容顯示新數(shù)據(jù)(默認(rèn)-true)
setEnableScrollContentWhenRefreshed boolean 是否在刷新成功之后滾動(dòng)內(nèi)容顯示新數(shù)據(jù)(默認(rèn)-true)V1.0.5
setEnableLoadMoreWhenContentNotFull boolean 在內(nèi)容不滿一頁(yè)的時(shí)候,是否可以上拉加載更多(默認(rèn)-false)
setEnableFooterFollowWhenLoadFinished boolean 是否在全部加載結(jié)束之后Footer跟隨內(nèi)容
setEnableClipHeaderWhenFixedBehind boolean 是否剪裁Header當(dāng)時(shí)樣式為FixedBehind時(shí)V1.0.5
setEnableClipFooterWhenFixedBehind boolean 是否剪裁Footer當(dāng)時(shí)樣式為FixedBehind時(shí)V1.0.5
setDisableContentWhenRefresh boolean 是否在刷新的時(shí)候禁止內(nèi)容的一切手勢(shì)操作(默認(rèn)false)
setDisableContentWhenLoading boolean 是否在加載的時(shí)候禁止內(nèi)容的一切手勢(shì)操作(默認(rèn)false)
setReboundInterpolator Interpolator 設(shè)置回彈動(dòng)畫的插值器(默認(rèn)減速)
setRefreshHeader RefreshHeader 設(shè)置指定的Header(默認(rèn)貝塞爾雷達(dá))
setRefreshFooter RefreshFooter 設(shè)置指定的Footer(默認(rèn)球脈沖)
setRefreshContent View 設(shè)置刷新Content(用于動(dòng)態(tài)替換空布局)
setOnRefreshListener OnRefreshListener 設(shè)置刷新監(jiān)聽器(不設(shè)置,默認(rèn)3秒后關(guān)刷新)
setOnLoadMoreListener OnLoadMoreListener 設(shè)置加載監(jiān)聽器(不設(shè)置,默認(rèn)3秒后關(guān)加載)
setOnRefreshLoadMoreListener OnRefreshLoadMoreListener 同時(shí)設(shè)置上面兩個(gè)監(jiān)聽器
setOnMultiPurposeListener OnMultiPurposeListener 設(shè)置多功能監(jiān)聽器
setLoadMoreFinished boolean 設(shè)置全部數(shù)據(jù)加載完成,之后不會(huì)觸發(fā)加載事件
setScrollBoundaryDecider boundary 設(shè)置滾動(dòng)邊界判斷
finishRefresh (int delayed) 完成刷新,結(jié)束刷新動(dòng)畫
finishLoadMore (int delayed) 完成加載,結(jié)束加載動(dòng)畫
finishRefresh (boolean success) 完成刷新,并設(shè)置是否成功
finishLoadMore (boolean success) 完成加載,并設(shè)置是否成功
finishLoadMoreWithNoMoreData 完成加載并標(biāo)記沒(méi)有更多數(shù)據(jù)(V1.0.4)
closeHeaderOrFooter 關(guān)閉 Header 或者 Footer(1.1.0)
resetNoMoreData V1.0.4(V1.1.0刪除,用 setNoMoreData(false) 代替)
setNoMoreData boolean 設(shè)置更多數(shù)據(jù)狀態(tài)V1.0.5
getRefreshHeader RefreshHeader 獲取Header
getRefreshFooter RefreshFooter 獲取Footer
getState RefreshState 獲取當(dāng)前狀態(tài)
isRefreshing boolean (V1.1.0刪除,版本用 getState==Refreshing 代替)
isLoading boolean (V1.1.0刪除,版本用 getState==Loading 代替)
autoRefresh (int delayed) 觸發(fā)自動(dòng)刷新
autoLoadMore (int delayed) 觸發(fā)自動(dòng)加載

Header-Attributes

name format description
srlPrimaryColor color 主題顏色
srlAccentColor color 強(qiáng)調(diào)顏色
srlDrawableArrow drawable 箭頭圖片
srlDrawableProgress drawable 轉(zhuǎn)動(dòng)圖片
srlClassicsSpinnerStyle enum 變換樣式:Translate(平行移動(dòng))、Scale(拉伸形變)、FixedBehind(固定在背后)
srlSpinnerStyle enum 變換樣式:srlClassicsSpinnerStyle的全部、FixedFront(固定在前面或全屏)
srlFinishDuration int 動(dòng)畫結(jié)束時(shí),顯示完成狀態(tài)停留的時(shí)間(毫秒)
srlEnableLastTime boolean 是否顯示上次更新時(shí)間(默認(rèn)true)
srlDrawableMarginRight dimension 圖片相對(duì)右邊文字的距離(默認(rèn)20dp)
srlTextTimeMarginTop dimension 更新時(shí)間相對(duì)上面標(biāo)題的距離(默認(rèn)2dp)
srlTextSizeTitle dimension 標(biāo)題文字大?。J(rèn)16sp)
srlTextSizeTime dimension 時(shí)間文字大?。J(rèn)12sp)

Header-Method

name format description
setPrimaryColor color 主題顏色
setAccentColor color 強(qiáng)調(diào)顏色
setArrowDrawable drawable 設(shè)置箭頭圖片
setProgressDrawable drawable 設(shè)置轉(zhuǎn)動(dòng)圖片
setArrowBitmap bitmap 設(shè)置箭頭圖片(V1.1.0版本刪除)
setProgressBitmap bitmap 設(shè)置轉(zhuǎn)動(dòng)圖片(V1.1.0版本刪除)
setArrowResource int 設(shè)置箭頭圖片
setProgressResource int 設(shè)置轉(zhuǎn)動(dòng)圖片
setSpinnerStyle enum 變換樣式:參考屬性srlSpinnerStyle
setClassicsSpinnerStyle enum 變換樣式:參考屬性srlClassicsSpinnerStyle
setFinishDuration int 設(shè)置動(dòng)畫結(jié)束時(shí),顯示完成狀態(tài)停留的時(shí)間(毫秒)
setEnableLastTime boolean 是否顯示上次更新時(shí)間(默認(rèn)true)
setTextSizeTitle dimension 標(biāo)題文字大?。J(rèn)16sp)
setTextSizeTime dimension 時(shí)間文字大小(默認(rèn)12sp)
setLastUpdateText string 手動(dòng)設(shè)置更新時(shí)間,將不會(huì)自動(dòng)更新時(shí)間
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SmartRefreshLayout是一個(gè)“聰明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的...
    BrightLight閱讀 185,974評(píng)論 10 147
  • 一、前言: SmartRefreshLayout是一個(gè)“聰明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只...
    因?yàn)槲业男?/span>閱讀 11,746評(píng)論 0 8
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 13,951評(píng)論 2 59
  • Share from here 我是個(gè)快樂(lè)的搬運(yùn)工 Android智能下拉刷新框架,支持越界回彈,集成了幾十種炫酷...
    MagicLon閱讀 13,012評(píng)論 1 10
  • 程序員界有個(gè)神奇的網(wǎng)站,那就是github,這個(gè)網(wǎng)站集合了一大批優(yōu)秀的開源框架,極大地節(jié)省了開發(fā)者開發(fā)的時(shí)間,在這...
    拖小殼兒閱讀 4,598評(píng)論 0 12

友情鏈接更多精彩內(nèi)容