一、SwipeRefreshLayout的簡介
以前我們都是使用XListView等流行框架實現(xiàn)下拉刷新以及上拉加載更多的,今天我介紹一個新的控件SwipeRefreshLayout,它是谷歌官方提供的一個新控件,同樣可以實現(xiàn)下拉刷新。
SwipeRefreshLayout是V4支持包中提供的一個新的控件,它可以實現(xiàn)下拉刷新的功能。但是缺點是沒有實現(xiàn)上拉加載更多。但是網(wǎng)上有很多開發(fā)者對它進行加強,使得它可以實現(xiàn)上拉加載。
SwipeRefreshLayout可以與ListView,RecycleView,GridView等列表控件配合使用,而且高度解耦,使用方便靈活,下拉刷新效果比較炫酷,因此贏得我們的青睞。
這是SwipeRefreshLayout的官方文檔,注:這是國內(nèi)的API鏡像。
http://doc.cniao5.com/android/reference/android/support/v4/widget/SwipeRefreshLayout.html
二、SwipeRefreshLayout的基本使用 1、在Gradle中引入SwipeRefreshLayout的依賴庫。 compile 'com.android.support:support-v4:23.1.1' 2、在布局文件當中放置我們的SwipeRefreshLayout。SwipeRefreshLayout里面也可以放置任意列表控件,通過這種方式可以實現(xiàn)SwipeRefreshLayout和列表之間的解耦。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/refreshLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recycle" android:layout_width="match_parent" android:layout_height="wrap_content"/> </android.support.v4.widget.SwipeRefreshLayout> </LinearLayout> 3、代碼中的配置,詳細看注釋,不一一贅述。這個Demo是在CardView的基礎(chǔ)上修改而來的。
refreshLayout= (SwipeRefreshLayout)findViewById(R.id.refreshLayout); //設(shè)置進度條的顏色,不定長參數(shù)可以設(shè)置多種顏色 //對于RefreshLayout,網(wǎng)上有人說最多4種顏色,不要使用android.R.color.,否則會卡死 refreshLayout.setColorSchemeColors( Color.RED, Color.YELLOW, Color.GREEN); //設(shè)置進度條的背景顏色 refreshLayout.setProgressBackgroundColorSchemeColor(Color.WHITE); //設(shè)置大小 refreshLayout.setSize(SwipeRefreshLayout.LARGE); //設(shè)置手指劃過多少像素開始觸發(fā)刷新 refreshLayout.setDistanceToTriggerSync(100); //設(shè)置刷新的時候監(jiān)聽,三秒鐘之后添加數(shù)據(jù)完畢 refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { //模擬網(wǎng)絡(luò)請求數(shù)據(jù) new Handler().postDelayed(new Runnable() { @Override public void run() { for (int i = 0; i < 30; i++) { //添加數(shù)據(jù) myAdapter.addData(i, "new data " + i); myAdapter.notifyItemRangeChanged(0, 30); } //recyclerView回到最上面 recyclerView.scrollToPosition(0); //判斷是否在刷新 // refreshLayout.isRefreshing() //刷新完畢,關(guān)閉下拉刷新的組件 refreshLayout.setRefreshing(false); } }, 3000); } });
三、運行效果
是不是覺得瞬間高大上有木有,大家快去敲碼吧O(∩_∩)O~~。
|