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

源代碼分析

興許有時間更新


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM