智慧北京04_自定義下拉刷新

1,自定義下拉刷新-添加頭佈局網絡

參考ui異步

 

1.1,下拉刷新其實是一個View,添加到ListView頭佈局上的控件佈局

  建立對應的佈局文件動畫

1.2,建立一個自定義控件PullToRefreshListViewui

建立方法initHeaderView()//初始化頭佈局控件spa

注意:頭佈局的添加順序:先添加的在上面線程

1.3,隱藏頭佈局3d

設置頭佈局的padding爲自身的(-高度)blog

獲取高度的時候,記得先手動測量一下接口

1.4,拉出頭佈局

 

 

重寫觸摸事件,記錄按下的位置(downX),和移動的位置,二者相減

可是這裏要注意,ViewPager頭條新聞可能會消費掉按下的位置,致使按下的位置(downX)沒有賦值,因此在移動的事件判斷中(要給downX從新賦值)

 

下拉的時候,判斷若是是一個條目,或移動的值爲正數才能拉出頭佈局

 

而後動態的修改padding(移動的值 - 高度);

 

1.5 頭佈局狀態切換

定義一個枚舉表示這三個狀態

下拉刷新:

默認狀態,padding 小於0的時候顯示,而且當前不處於正在刷新

鬆開刷新

padding大於0,而且上一個狀態處於下拉刷新進入

正在刷新

鬆開事件中,若是處於鬆開刷新時進入.

 

定義一個方法,當狀態發生改變的時候調用

觀察可知,狀態文字,時間,箭頭髮生了改變

箭頭動畫由↓逆時針180度↑,記得保持最後的狀態

 

當鬆手以後,若是爲刷新狀態:修改頭佈局padding0,完整展現,顯示進度條,隱藏箭頭(記得把動畫清理掉,不然不能隱藏)不然隱藏頭佈局

 

細節:若是處於正在刷新,再次拖拽的時候不該該進入判斷,break跳出循環

 

1.6 接口回調

哪裏須要通知調用者,就在哪裏進行調用接口方法

要提供一個方法給外界設置回調監聽器

 

調用者在回調的方法裏再次訪問網絡解析數據

 

自定義控件中提供一個方法,讓調用者調用

同時調用自定義控件的方法,告訴自定義控件刷新結束了(網絡請求失敗的時候也要調用一下)

 

1.7 時間更新

建立一個設置時間的方法,讓調用者調用(不在自定義控件中更新,是由於網絡請求可能失敗,失敗的話,是不須要更新時間的,)

固然,也能夠寫在刷新的方法裏,傳遞一個參數進來,判斷是否成功請求網絡

MM月 若是是小寫 就是從0開始的

HH 小時 24進制,hh 12進制

 

初次顯示的時間,能夠按需求來,是否須要保存在本地(只顯示成功請求的時間之類的)

 

1.8 Xutils細節補充

Xutils訪問網絡不須要建立子線程,由於它底層用的是AsyncTask

Xutils的回調方法裏能夠更新ui,由於回調方法其實是在handler裏進行的,已經在主線程中運行了.就不用擔憂更新ui的問題.底層是異步的

相關文章
相關標籤/搜索