SuperSwipeRefreshLayout
一个功能强大的自己定义下拉刷新组件。
Why?
下拉刷新这样的控件。想必大家用的太多了,比方使用非常多的XListView等。
近期。项目中非常多列表都是使用ReyclerView实现的。取代了原有的ListView,原有下拉刷新方式遭到挑战。本来Google推出的SwipeRefreshLayout已经能够满足大部分的需求了。
然而,因为其定制性较差。下拉刷新的样式无法改动。并且被嵌套的View也无法尾随手指的滑动而滑动。基于以上考虑,定制自己强大的SuperSwipeRefreshLayout。
Feature
- 非侵入式。对原来的ListView、RecyclerView没有不论什么影响,使用方法和SwipeRefreshLayout相似。
- 可自己定义头部View的样式。调用setHeaderView方法就可以
- 支持很多其它:RecyclerView,ListView,ScrollView。GridView等等。
- 被包括的View(RecyclerView,ListView etc.)可尾随手指的滑动而滑动
默认是尾随手指的滑动而滑动。也能够设置为不尾随:setTargetScrollWithLayout(false) - 回调方法很多其它
比方:onRefresh() onPullDistance(int distance)和onPullEnable(boolean enable)
开发者能够依据下拉过程中distance的值做一系列动画。
How to use
step 1
<net.mobctrl.views.SuperSwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</net.mobctrl.views.SuperSwipeRefreshLayout>
step 2
swipeRefreshLayout = (SuperSwipeRefreshLayout) findViewById(R.id.swipe_refresh);
swipeRefreshLayout.setHeaderView(createHeaderView());// add headerView
swipeRefreshLayout
.setOnPullRefreshListener(new OnPullRefreshListener() {
@Override
public void onRefresh() {
//TODO 開始刷新
}
@Override
public void onPullDistance(int distance) {
//TODO 下拉距离
}
@Override
public void onPullEnable(boolean enable) {
//TODO 下拉过程中,下拉的距离是否足够出发刷新
}
});
step 3
- create your header view
swipeRefreshLayout.setHeaderView(createHeaderView());// add headerView
/**
* create Header View
*/
private View createHeaderView(){
//TODO 创建下拉刷新头部的View样式
}
跟手滑动设置
- setTargetScrollWithLayout(false/true);//default true
swipeRefreshLayout.setTargetScrollWithLayout(true);
Support View
- RecyclerView.
- ListView
- SrcollView
- GridView
- etc.
Demo
效果
兴许
如有必要,能够添加上拉载入很多其它的功能。
源代码:
Github https://github.com/nuptboyzhb/SuperSwipeRefreshLayout
源代码分析
兴许有时间更新