標題: 商城開發(fā)筆記-08-下拉刷新控件SwipeRefreshLayout介紹 [打印本頁]
作者: 51黑bing 時間: 2016-3-22 17:22
標題: 商城開發(fā)筆記-08-下拉刷新控件SwipeRefreshLayout介紹
一、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的基礎上修改而來的。
refreshLayout= (SwipeRefreshLayout)findViewById(R.id.refreshLayout);
//設置進度條的顏色,不定長參數(shù)可以設置多種顏色
//對于RefreshLayout,網(wǎng)上有人說最多4種顏色,不要使用android.R.color.,否則會卡死
refreshLayout.setColorSchemeColors(
Color.RED,
Color.YELLOW,
Color.GREEN);
//設置進度條的背景顏色
refreshLayout.setProgressBackgroundColorSchemeColor(Color.WHITE);
//設置大小
refreshLayout.setSize(SwipeRefreshLayout.LARGE);
//設置手指劃過多少像素開始觸發(fā)刷新
refreshLayout.setDistanceToTriggerSync(100);
//設置刷新的時候監(jiān)聽,三秒鐘之后添加數(shù)據(jù)完畢
refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//模擬網(wǎng)絡請求數(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()
//刷新完畢,關閉下拉刷新的組件
refreshLayout.setRefreshing(false);
}
}, 3000);
}
});
三、運行效果
是不是覺得瞬間高大上有木有,大家快去敲碼吧O(∩_∩)O~~。
歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |