1. 程式人生 > >Android-PullToRefresh 之一:概要設計

Android-PullToRefresh 之一:概要設計

系列文章

前言

本文要分析的開源庫Android-PullToRefresh原始碼來自chrisbanes寫的Android-PullToRefresh,因為這個開源庫是開發者用的最多的,也是最經典的,許多重新整理庫是在它的基礎上修改的。
在理解Android-PullToRefresh庫之前最好是先知道如何使用,不懂可參考Android PullToRefresh (ListView GridView 下拉重新整理) 使用詳解
要理解PullToRefresh需要從概要設計、詳細設計、擴充套件的PullToRefreshRecyclerView這個三個方面逐步分析。

概要設計(即功能設計):不涉及程式設計知識的或者說使用者能理解的設計,如:重新整理、下載、UI。
下面從UI結構、功能兩方面講解Android-PullToRefresh的概要設計。

PullToRefresh 的UI結構

抽象的UI結構

抽象的UI結構圖(抽象的PullToRefresh):頭部、內容區域、尾部
PullToRefresh 的UI結構

具體的UI結構

具體的UI結構(具體的PullToRefresh,如PullToRefreshListView、PullToRefreshHorizontalScrollView等):

PullToRefreshListView(header是rotate型別)
ptr垂直下拉


ptr垂直上拉

PullToRefreshHorizontalScrollView(header是flip型別)
ptr水平右拉
ptr水平左拉

  • 總結:
    1、在Android-PullToRefresh中,header、footer的具體實現一樣,都有兩種實現方式,一種是 rotate 型別的(圖片是圈圈),另一中是 flip 型別的(圖片是箭頭的)。
    2、一個具體的 PullToRefresh 中,如 PullToRefreshScrollView,它的 header 可以是rotate型別也可以是flip型別,但無論是哪種型別,在同個頁面中 header 和 footer 必須是同一型別。

PullToRefresh 的功能

“抽象功能”

“抽象功能”,即與具體用例無關的功能,這裡的抽象功能是基於抽象的UI結構的。

“抽象功能”:下拉重新整理、上拉載入。
根據下拉重新整理的操作過程可將下拉重新整理進一步細分為以下4個狀態
- 初始狀態
- 下拉過程:包括下拉重新整理、釋放重新整理
- 正在重新整理
注意:其它一些開源專案還有“重新整理結果”。這裡的“下拉重新整理”、“釋放重新整理”分別是下拉距離小於等於、大於某個設定值itemDimension 時下拉頭顯示的文字。

同理,上拉載入的4個狀態:
- 初始狀態
- 上拉過程(包括上拉載入、釋放載入)
- 正在載入

由上面可知,下拉重新整理和上拉載入都可以抽象為以下4個狀態:
- reset
- pull(包括pull to refresh、release to refresh)
- refreshing

“具體功能”

“具體功能”,即基於具體用例的功能。這裡的具體功能是基於具體UI結構的功能。
比如:PullToRefreshListView的下拉重新整理、上拉載入就是具體的功能。

結語

清楚“抽象的UI結構和具體的UI結構的區別”、“抽象功能和具體功能的區別”這兩點對後面的詳細設計十分重要!!!