SwipeRefreshLayout 的使用詳解

SwipeRefreshLayout作為谷歌官方推薦的下拉刷新控件,同時簡單而又不失優雅的風格,讓許多app都使用了這一控件,今天記錄下SwipeRefreshLayout在項目中的實際運用。
首先,我們在布局文件中使用:

     <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內,這樣,我們一個簡單的布局就完成了。

現在我們可以運行試試效果。

Screenshot_1553658047.png

一個黑不拉幾的下拉樣式就出來啦,有人肯定會覺得不對啊,這個怎么一直轉,還是黑色的,別急,我們慢慢來

設置SwipeRefreshLayout 的顏色

我們先在res/values/color中定義好幾個顏色

     <color name="blue">#5BC0DE</color>
     <color name="red">#FF4081</color>
     <color name="black">#000000</color>

然后在java代碼中設置顏色:

swipeRefreshLayout.setColorSchemeResources(R.color.blue);

接下來讓我們運行看看:

Screenshot_1553658583.png

我們成功改變了下拉樣式的顏色,而且可以支持三種顏色變換哦

swipeRefreshLayout.setColorSchemeResources(R.color.blue,R.color.red,R.color.black);

設置SwipeRefreshLayout 下拉刷新功能的實現

這個下拉為啥一直在轉呢?因為我們還沒在代碼中設置它的停止,按邏輯來說,我們將在發起數據請求后,服務器做出回應或者一定時間沒有得到回應后,將動畫取消。讓我們先看看SwipeRefreshLayout 的回調方法

swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
           @Override
           public void onRefresh() {
                 //這里獲取數據的邏輯
               swipeRefreshLayout.setRefreshing(false);
           }
       });

swipeRefreshLayout.setRefreshing(false)這句話傳入一個布爾變量,false代表停止執行,這樣,當我們執行完畢獲取數據的過程后,就可以將一直轉的下拉動畫給取消掉啦,而且呢, swipeRefreshLayout.setRefreshing()這個方法也可以實現第一次打開頁面自動下拉刷新的邏輯,具體實現請問度娘。

SwipeRefreshLayout 的其他幾個方法

//設置進度View樣式的大小,只有兩個值DEFAULT和LARGE,表示默認和較大
swipeRefreshLayout.setSize(DEFAULT);
//設置觸發下拉刷新的距離
swipeRefreshLayout.setDistanceToTriggerSync(300);
//設置動畫樣式下拉的起始點和結束點,scale 是指設置是否需要放大或者縮小動畫。
swipeRefreshLayout.setProgressViewOffset(boolean scale, int start, int end)
//設置動畫樣式下拉的結束點,scale 是指設置是否需要放大或者縮小動畫
swipeRefreshLayout.setProgressViewEndTarget(boolean scale, int end);
//如果自定義了swipeRefreshLayout,可以通過這個回調方法決定是否可以滑動。
setOnChildScrollUpCallback(@Nullable OnChildScrollUpCallback callback)

本文為原創,轉載請標明出處。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,200評論 4 61
  • 個人主頁演示Demo下載 本文重點介紹了SwipeRefreshLayout的使用和自定View繼承SwipeRe...
    笑說余生閱讀 129,502評論 57 216
  • 《裕語言》速成開發手冊3.0 官方用戶交流:iApp開發交流(1) 239547050iApp開發交流(2) 10...
    葉染柒丶閱讀 27,685評論 5 19
  • 中國人吃著半生不熟的牛排,就好像中世紀西方人喜歡坐中國的轎子,富貴人家總喜歡向富貴國家的富貴人家學習,在享受上標新...
    woodpeckers閱讀 205評論 0 0
  • 這天兒子中午放學到家有一會兒了,有人突然按門鈴。原來是兒子的同學小陳的姑姑上門詢問小陳的下落,說是沒看到他回...
    threeredbird閱讀 537評論 0 2