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

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

效果
demo

后续

如有必要,可以增加上拉加载更多的功能。

源码:

Github https://github.com/nuptboyzhb/SuperSwipeRefreshLayout

源码分析

后续有时间更新

发布了277 篇原创文章 · 获赞 56 · 访问量 169万+

猜你喜欢

转载自blog.csdn.net/NUPTboyZHB/article/details/47980689