RecyclerView已經(jīng)寫過兩篇文章了,分別是Android 5.X新特性之RecyclerView基本解析及無限復(fù)用 和 Android 5.X新特性之為RecyclerView添加HeaderView和FooterView,既然來到這里還沒學(xué)習(xí)的,先去學(xué)習(xí)下吧。

今天我們的主題是學(xué)習(xí)為RecyclerView添加下拉刷新和上拉加載功能。

首先,我們先來學(xué)習(xí)下拉刷新,google公司已經(jīng)為我們提供的一個很好的包裝類,那就是SwipeRefreshLayout,這個類可以支持我們向下滑動并進(jìn)行監(jiān)聽。那么我們先了解一些基本知識,然后再從源碼的角度來解析它。

A. SwipeRefreshLayout 是一個容器,直接繼承于ViewGroup。

從其源碼中我們可以直接看出,它是直接繼承于ViewGroup的,所以它是一個容器,既然是一個容器,那么我們就可以向其中添加View。

B. SwipeRefreshLayout 封裝了一些列的方法供我們使用,其中較常用的包括以下幾個。

1. setColorSchemeResources: 刷新時動畫的顏色,可以設(shè)置4個 2. setProgressBackgroundColorSchemeResource: 設(shè)置刷新時進(jìn)度圓環(huán)的背景顏色 3. setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener): 設(shè)置手勢滑動監(jiān)聽器。 4. setRefreshing(Boolean refreshing): 設(shè)置組件的刷洗狀態(tài)。 5. setSize(int size):設(shè)置進(jìn)度圈的大小,只有兩個值:DEFAULT、LARGE

其中最主要的是setOnRefreshListener,它是用來監(jiān)聽我們下拉手勢的回調(diào)方法。

C. 接下來我們再從源碼的角度來了解這個類:

SwipeRefreshLayout 是一個ViewGroup容器,那在向它添加子View的時候,那首先會去測量各個子View的大小來確定本身的大小,并且還會制定子View的坐標(biāo)位置,最后繪制View并顯示出來。針對ViewGroup的繪制我之前有寫過一篇博文,大家可以去參考下Android自定義控件之繼承ViewGroup創(chuàng)建新容器(四) ,里面有詳細(xì)的講解。而我們今天所要講解的是從SwipeRefreshLayout 的事件機(jī)制來說起,也更符合我們下拉刷新的主題。

<

網(wǎng)友評論