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

来源:互联网 发布:淘宝外贸尾单店 编辑:程序博客网 时间:2024/05/02 11:49

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

源码分析

后续有时间更新

2 0
原创粉丝点击