Share from here? ?我是個(gè)快樂的搬運(yùn)工
Android智能下拉刷新框架,支持越界回彈呀邢,集成了幾十種炫酷的Header和 Footer。 RefreshLayout豹绪,OverScroll.
特點(diǎn)功能:
支持自定義并且已經(jīng)集成了很多炫酷的 Header 和 Footer ?支持和ListView的同步滾動(dòng) 和 RecyclerView、AppBarLayout申眼、CoordinatorLayout 的嵌套滾動(dòng) NestedScrolling.
支持在Android Studio Xml 編輯器中預(yù)覽 效果 支持分別在 Default(默認(rèn))瞒津、Xml、JavaCode 三個(gè)中設(shè)置 Header 和 Footer.
支持自動(dòng)刷新括尸、自動(dòng)上拉加載(自動(dòng)檢測(cè)列表滾動(dòng)到底部巷蚪,而不用手動(dòng)上拉). 支持通用的刷新監(jiān)聽器 OnRefreshListener 和更詳細(xì)的滾動(dòng)監(jiān)聽 OnMultiPurposeListener.
支持自定義回彈動(dòng)畫的插值器,實(shí)現(xiàn)各種炫酷的動(dòng)畫效果. 支持設(shè)置主題來適配任何場(chǎng)景的App濒翻,不會(huì)出現(xiàn)炫酷但很尷尬的情況.
支持設(shè)置多種滑動(dòng)方式來適配各種效果的Header和Footer:平移屁柏、拉伸啦膜、背后固定、頂層固定淌喻、全屏 支持內(nèi)容尺寸自適應(yīng) Content-wrap_content
支持繼承重寫和擴(kuò)展功能僧家,內(nèi)部實(shí)現(xiàn)沒有 private 方法和字段,繼承之后都可以重寫覆蓋 支持越界回彈(Listview裸删、RecyclerView八拱、ScrollView、WebView…View)
簡單用例
1.在 buld.gradle 中添加依賴
簡單用例
```
//1.1.0 API改動(dòng)過大涯塔,老用戶升級(jí)需謹(jǐn)慎
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-6'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-6'//沒有使用特殊Header肌稻,可以不加這行
compile 'com.android.support:appcompat-v7:25.3.1'//版本 23以上(必須)
//1.0.5 當(dāng)1.1.0出現(xiàn)問題可以回退到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'//版本隨意(非必須匕荸,引用可以解決無法預(yù)覽問題
```
2.在XML布局文件中添加 SmartRefreshLayout
<?xmlversion="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">
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:background="#fff"/>
3.在 Activity 或者 Fragment 中添加代碼
RefreshLayout refreshLayout=(RefreshLayout)findViewById(R.id.refreshLayout);refreshLayout.setOnRefreshListener(new OnRefreshListener() {@Overridepublic void onRefresh(RefreshLayoutrefreshlayout) { refreshlayout.finishRefresh(2000); }});refreshLayout.setOnLoadmoreListener(new OnLoadmoreListener() {@Overridepublic void onLoadmore(RefreshLayoutrefreshlayout) { refreshlayout.finishLoadmore(2000); }});
使用指定的 Header 和 Footer
1.方法一 全局設(shè)置
SmartRefreshLayout.setDefaultRefreshHeaderCreater(new DefaultRefreshHeaderCreater({ @Override public RefreshHeader createRefreshHeader(Contextcontext,RefreshLayoutlayout) { return new ClassicsHeader(context);//指定為經(jīng)典Header爹谭,默認(rèn)是 貝塞爾雷達(dá)Header } });//設(shè)置全局的Footer構(gòu)建器SmartRefreshLayout.setDefaultRefreshFooterCreater(new DefaultRefreshFooterCreater() { @Override public RefreshFooter createRefreshFooter(Contextcontext,RefreshLayoutlayout) { return new ClassicsFooter(context);//指定為經(jīng)典Footer,默認(rèn)是 BallPulseFooter } });
注意:方法一 設(shè)置的Header和Footer的優(yōu)先級(jí)是最低的榛搔,如果同時(shí)還使用了方法二诺凡、三,將會(huì)被其他方法取代
2.方法二 XML布局文件指定?
<com.scwang.smartrefresh.layout.SmartRefreshLayoutxmlns:app="http://schemas.android.com/apk/resauto" android:id="@+id/smartLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#444444" app:srlPrimaryColor="#444444" app:srlAccentColor="@android:color/white" app:srlEnablePreviewInEditMode="true"> < !--srlAccentColor srlPrimaryColor 將會(huì)改變 Header 和 Footer 的主題顏色--> < !--srlEnablePreviewInEditMode 可以開啟和關(guān)閉預(yù)覽功能--><com.scwang.smartrefresh.layout.header.ClassicsHeader android:layout_width="match_parent" android:layout_height="wrap_content" app:srlClassicsSpinnerStyle="FixedBehind"/><!--FixedBehind可以讓Header固定在內(nèi)容的背后药薯,下拉的時(shí)候效果同微信瀏覽器的效果--><TextView android:layout_width="match_parent" android:layout_height="match_parent" android:padding="@dimen/padding_common" android:background="@android:color/white" android:text="@string/description_define_in_xml"/><com.scwang.smartrefresh.layout.footer.ClassicsFooter android:layout_width="match_parent" android:layout_height="wrap_content" app:srlClassicsSpinnerStyle="FixedBehind"/><!--FixedBehind可以讓Footer固定在內(nèi)容的背后绑洛,下拉的時(shí)候效果同微信瀏覽器的效果-->/com.scwang.smartrefresh.layout.SmartRefreshLayout>
注意:方法二 XML設(shè)置的Header和Footer的優(yōu)先級(jí)是中等的,會(huì)被方法三覆蓋童本。
3.方法三 Java代碼設(shè)置
final RefreshLayout refreshLayout=(RefreshLayout) findViewById(R.id.smartLayout);//設(shè)置 Header 為 Material風(fēng)格refreshLayout.setRefreshHeader(new MaterialHeader(this).setShowBezierWave(true));//設(shè)置 Footer 為 球脈沖refreshLayout.setRefreshFooter(new BallPulseFooter(this).setSpinnerStyle(SpinnerStyle.Scale));