Android智能下拉刷新框架,支持越界回彈顶籽,集成了幾十種炫酷的Header和 Footer。 RefreshLayout银觅,OverScroll礼饱。
支持所有的 View(AbsListView、RecyclerView究驴、WebView....View) 和多層嵌套的視圖結構
支持自定義并且已經集成了很多炫酷的 Header 和 Footer (圖).
支持和 ListView 的同步滾動 和 RecyclerView镊绪、AppBarLayout、CoordinatorLayout 的嵌套滾動 NestedScrolling.
支持在 Android Studio Xml 編輯器中預覽 效果(圖)
支持分別在 Default(默認)洒忧、Xml蝴韭、JavaCode 三個中設置 Header 和 Footer.
支持自動刷新、自動上拉加載(自動檢測列表慣性滾動到底部熙侍,而不用手動上拉).
支持通用的刷新監(jiān)聽器 OnRefreshListener 和更詳細的滾動監(jiān)聽 OnMultiPurposeListener.
支持自定義回彈動畫的插值器榄鉴,實現各種炫酷的動畫效果.
支持設置主題來適配任何場景的 App,不會出現炫酷但很尷尬的情況.
支持設置多種滑動方式來適配各種效果的 Header 和 Footer:平移蛉抓、拉伸庆尘、背后固定、頂層固定巷送、全屏
支持內容尺寸自適應 Content-wrap_content
支持繼承重寫和擴展功能驶忌,內部實現沒有 private 方法和字段,繼承之后都可以重寫覆蓋
支持越界回彈(Listview笑跛、RecyclerView付魔、ScrollView、WebView...View)
支持多點觸摸飞蹂,下拉几苍、上拉各種手勢沖突
1.在 buld.gradle 中添加依賴
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.1'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.1'//如果使用了特殊的Header//快照版本-新功能,可能不穩(wěn)定compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.2-alpha-3'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.2-alpha-3'//如果使用了特殊的Header
2.在 XML 布局文件中添加 SmartRefreshLayout
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() {
@Override
public void onRefresh(RefreshLayout refreshlayout) {
refreshlayout.finishRefresh(2000);
}
});
refreshLayout.setOnLoadmoreListener(new OnLoadmoreListener() {
@Override
public void onLoadmore(RefreshLayout refreshlayout) {
refreshlayout.finishLoadmore(2000);
}
});
SmartRefreshLayout.setDefaultRefreshHeaderCreater(new DefaultRefreshHeaderCreater({
@Override
public RefreshHeader createRefreshHeader(Contextcontext,RefreshLayoutlayout) {
return new ClassicsHeader(context);//指定為經典Header陈哑,默認是 貝塞爾雷達Header
}
});
//設置全局的Footer構建器
SmartRefreshLayout.setDefaultRefreshFooterCreater(new DefaultRefreshFooterCreater() {
@Override
public RefreshFooter createRefreshFooter(Contextcontext,RefreshLayoutlayout) {
return new ClassicsFooter(context);//指定為經典Footer擦剑,默認是 BallPulseFooter
}
});
注意:方法一 設置的Header和Footer的優(yōu)先級是最低的,如果同時還使用了方法二芥颈、三,將會被其他方法取代
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/refreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#444444"
app:srlPrimaryColor="#444444"
app:srlAccentColor="@android:color/white"
app:srlEnablePreviewInEditMode="true">
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
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"/>
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
注意:方法二 XML設置的Header和Footer的優(yōu)先級是中等的赚抡,會被方法三覆蓋爬坑。
final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R.id.refreshLayout);
//設置 Header 為 Material 風格
refreshLayout.setRefreshHeader(new MaterialHeader(this).setShowBezierWave(true));
//設置 Footer 為 球脈沖
refreshLayout.setRefreshFooter(new BallPulseFooter(this).setSpinnerStyle(SpinnerStyle.Scale));