標(biāo)題: 商城開發(fā)筆記-08-下拉刷新控件SwipeRefreshLayout介紹 [打印本頁]
作者: 51黑bing 時(shí)間: 2016-3-22 17:22
標(biāo)題: 商城開發(fā)筆記-08-下拉刷新控件SwipeRefreshLayout介紹
一、SwipeRefreshLayout的簡介
以前我們都是使用XListView等流行框架實(shí)現(xiàn)下拉刷新以及上拉加載更多的,今天我介紹一個(gè)新的控件SwipeRefreshLayout,它是谷歌官方提供的一個(gè)新控件,同樣可以實(shí)現(xiàn)下拉刷新。
SwipeRefreshLayout是V4支持包中提供的一個(gè)新的控件,它可以實(shí)現(xiàn)下拉刷新的功能。但是缺點(diǎn)是沒有實(shí)現(xiàn)上拉加載更多。但是網(wǎng)上有很多開發(fā)者對(duì)它進(jìn)行加強(qiáng),使得它可以實(shí)現(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、在布局文件當(dāng)中放置我們的SwipeRefreshLayout。SwipeRefreshLayout里面也可以放置任意列表控件,通過這種方式可以實(shí)現(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、代碼中的配置,詳細(xì)看注釋,不一一贅述。這個(gè)Demo是在CardView的基礎(chǔ)上修改而來的。
refreshLayout= (SwipeRefreshLayout)findViewById(R.id.refreshLayout);
//設(shè)置進(jìn)度條的顏色,不定長參數(shù)可以設(shè)置多種顏色
//對(duì)于RefreshLayout,網(wǎng)上有人說最多4種顏色,不要使用android.R.color.,否則會(huì)卡死
refreshLayout.setColorSchemeColors(
Color.RED,
Color.YELLOW,
Color.GREEN);
//設(shè)置進(jìn)度條的背景顏色
refreshLayout.setProgressBackgroundColorSchemeColor(Color.WHITE);
//設(shè)置大小
refreshLayout.setSize(SwipeRefreshLayout.LARGE);
//設(shè)置手指劃過多少像素開始觸發(fā)刷新
refreshLayout.setDistanceToTriggerSync(100);
//設(shè)置刷新的時(shí)候監(jiān)聽,三秒鐘之后添加數(shù)據(jù)完畢
refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//模擬網(wǎng)絡(luò)請(qǐ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()
//刷新完畢,關(guān)閉下拉刷新的組件
refreshLayout.setRefreshing(false);
}
}, 3000);
}
});
三、運(yùn)行效果
是不是覺得瞬間高大上有木有,大家快去敲碼吧O(∩_∩)O~~。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |