您的位置:首页 > 其它

SuperSwipeRefreshLayout 一个功能强大的自定义下拉刷新组件

2015-08-25 17:53 465 查看

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

源码分析

后续有时间更新
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  listview 控件