Android 中RecyclerView頂部刷新實現(xiàn)詳解
專注于為中小企業(yè)提供網(wǎng)站設(shè)計、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)遂平免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。1. RecyclerView頂部刷新的原理
RecyclerView頂部刷新的實現(xiàn)通常都是在RecyclerView外部再包裹一層布局。在這個外層布局中,還包含一個自定義的View,作為頂部刷新時的指示View。也就是說,外層布局中包含兩個child,一個頂部刷新View,一個RecyclerView,頂部刷新View默認(rèn)是隱藏不可見的。在外層布局中對滑動事件進(jìn)行處理,當(dāng)RecyclerView滑動到頂部并繼續(xù)下滑的時候,根據(jù)滑動的距離決定頂部刷新View的顯示。當(dāng)滑動距離超過某個設(shè)定的值的時候,執(zhí)行頂部刷新操作。
2. RecyclerView頂部刷新的實現(xiàn)
RecyclerView頂部刷新的實現(xiàn)一般包含如下步驟。
步驟3是其中最復(fù)雜的部分,需要在這些重寫的方法中,完成自身和child的測量,布局和滑動事件的處理。尤其是滑動事件的處理,需要對Android View的滑動機(jī)制有全面的了解才能實現(xiàn)。
Google在19.1之后的support library v4包中增加了SwipeRefreshLayout類。它繼承自ViewGroup,在它的內(nèi)部包含了一個CircleImageView對象作為頂部刷新View,同時它實現(xiàn)了上述步驟3的全部功能。將SwipeRefreshLayout和RecyclerView結(jié)合在一起,可以輕松的實現(xiàn)頂部刷新功能。
3.1 SwipeRefreshLayout用法
在介紹SwipeRefreshLayout和RecyclerView結(jié)合實現(xiàn)頂部刷新功能之前,先介紹下SwipeRefreshLayout的用法。
SwipeRefreshLayout最重要的兩個方法是:setOnRefreshListener()和setRefreshing()。
setOnRefreshListener()方法用來設(shè)置頂部刷新事件的監(jiān)聽,當(dāng)需要執(zhí)行頂部刷新時會調(diào)用此listener的onRefresh()方法,來獲取最新的數(shù)據(jù)。
setRefreshing()方法用來設(shè)置頂部刷新狀態(tài)。當(dāng)數(shù)據(jù)獲取完成后,需要調(diào)用此方法表示刷新完成。
除此之外,SwipeRefreshLayout還提供了一些方法用來設(shè)置頂部刷新View進(jìn)度條顏色,背景色等。
3.2 SwipeRefreshLayout結(jié)合RecyclerView實現(xiàn)頂部刷新
SwipeRefreshLayout結(jié)合RecyclerView實現(xiàn)頂部刷新功能非常簡單,只需要在SwipeRefreshLayout中包含一個RecyclerView作為其child即可??梢灾苯油ㄟ^XML文件來布局。
XML布局如下。