SwipeRefreshLayout作為谷歌官方推薦的下拉刷新控件庭砍,同時(shí)簡(jiǎn)單而又不失優(yōu)雅的風(fēng)格噪叙,讓許多app都使用了這一控件改基,今天記錄下SwipeRefreshLayout在項(xiàng)目中的實(shí)際運(yùn)用阳液。
首先怕敬,我們?cè)诓季治募惺褂茫?/p>
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</android.support.v4.widget.SwipeRefreshLayout>
注意,將listview或者recyclerview放在SwipeRefreshLayout內(nèi)帘皿,這樣东跪,我們一個(gè)簡(jiǎn)單的布局就完成了。
現(xiàn)在我們可以運(yùn)行試試效果鹰溜。
一個(gè)黑不拉幾的下拉樣式就出來(lái)啦虽填,有人肯定會(huì)覺(jué)得不對(duì)啊,這個(gè)怎么一直轉(zhuǎn)曹动,還是黑色的斋日,別急,我們慢慢來(lái)
設(shè)置SwipeRefreshLayout 的顏色
我們先在res/values/color中定義好幾個(gè)顏色
<color name="blue">#5BC0DE</color>
<color name="red">#FF4081</color>
<color name="black">#000000</color>
然后在java代碼中設(shè)置顏色:
swipeRefreshLayout.setColorSchemeResources(R.color.blue);
接下來(lái)讓我們運(yùn)行看看:
我們成功改變了下拉樣式的顏色墓陈,而且可以支持三種顏色變換哦
swipeRefreshLayout.setColorSchemeResources(R.color.blue,R.color.red,R.color.black);
設(shè)置SwipeRefreshLayout 下拉刷新功能的實(shí)現(xiàn)
這個(gè)下拉為啥一直在轉(zhuǎn)呢恶守?因?yàn)槲覀冞€沒(méi)在代碼中設(shè)置它的停止,按邏輯來(lái)說(shuō)贡必,我們將在發(fā)起數(shù)據(jù)請(qǐng)求后兔港,服務(wù)器做出回應(yīng)或者一定時(shí)間沒(méi)有得到回應(yīng)后,將動(dòng)畫(huà)取消仔拟。讓我們先看看SwipeRefreshLayout 的回調(diào)方法
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//這里獲取數(shù)據(jù)的邏輯
swipeRefreshLayout.setRefreshing(false);
}
});
swipeRefreshLayout.setRefreshing(false)這句話傳入一個(gè)布爾變量衫樊,false代表停止執(zhí)行,這樣理逊,當(dāng)我們執(zhí)行完畢獲取數(shù)據(jù)的過(guò)程后橡伞,就可以將一直轉(zhuǎn)的下拉動(dòng)畫(huà)給取消掉啦盒揉,而且呢晋被, swipeRefreshLayout.setRefreshing()這個(gè)方法也可以實(shí)現(xiàn)第一次打開(kāi)頁(yè)面自動(dòng)下拉刷新的邏輯兑徘,具體實(shí)現(xiàn)請(qǐng)問(wèn)度娘。
SwipeRefreshLayout 的其他幾個(gè)方法
//設(shè)置進(jìn)度View樣式的大小羡洛,只有兩個(gè)值DEFAULT和LARGE挂脑,表示默認(rèn)和較大
swipeRefreshLayout.setSize(DEFAULT);
//設(shè)置觸發(fā)下拉刷新的距離
swipeRefreshLayout.setDistanceToTriggerSync(300);
//設(shè)置動(dòng)畫(huà)樣式下拉的起始點(diǎn)和結(jié)束點(diǎn),scale 是指設(shè)置是否需要放大或者縮小動(dòng)畫(huà)欲侮。
swipeRefreshLayout.setProgressViewOffset(boolean scale, int start, int end)
//設(shè)置動(dòng)畫(huà)樣式下拉的結(jié)束點(diǎn)崭闲,scale 是指設(shè)置是否需要放大或者縮小動(dòng)畫(huà)
swipeRefreshLayout.setProgressViewEndTarget(boolean scale, int end);
//如果自定義了swipeRefreshLayout,可以通過(guò)這個(gè)回調(diào)方法決定是否可以滑動(dòng)威蕉。
setOnChildScrollUpCallback(@Nullable OnChildScrollUpCallback callback)
本文為原創(chuàng)刁俭,轉(zhuǎn)載請(qǐng)標(biāo)明出處。