Android-PullToRefresh 之一:概要设计

  • 系列文章
  • 前言
  • PullToRefresh 的UI结构
    • 抽象的UI结构
    • 具体的UI结构
  • PullToRefresh 的功能
    • “抽象功能”
    • “具体功能”
  • 结语

系列文章


Android-PullToRefresh 之一:概要设计
Android-PullToRefresh 之二:详细设计(一、PullToRefresh)
Android-PullToRefresh 之二:详细设计(二、LoadingLayout)
Android-PullToRefresh 之三:扩展的PullToRefreshRecyclerView

前言


本文要分析的开源库Android-PullToRefresh源码来自chrisbanes写的Android-PullToRefresh,因为这个开源库是开发者用的最多的,也是最经典的,许多刷新库是在它的基础上修改的。
在理解Android-PullToRefresh库之前最好是先知道如何使用,不懂可参考Android PullToRefresh (ListView GridView 下拉刷新) 使用详解。
要理解PullToRefresh需要从概要设计、详细设计、扩展的PullToRefreshRecyclerView这个三个方面逐步分析。

概要设计(即功能设计):不涉及编程知识的或者说用户能理解的设计,如:刷新、下载、UI。
下面从UI结构、功能两方面讲解Android-PullToRefresh的概要设计。

PullToRefresh 的UI结构


抽象的UI结构

抽象的UI结构图(抽象的PullToRefresh):头部、内容区域、尾部
Android-PullToRefresh 之一:概要设计_第1张图片

具体的UI结构

具体的UI结构(具体的PullToRefresh,如PullToRefreshListView、PullToRefreshHorizontalScrollView等):

PullToRefreshListView(header是rotate类型)
Android-PullToRefresh 之一:概要设计_第2张图片
Android-PullToRefresh 之一:概要设计_第3张图片

PullToRefreshHorizontalScrollView(header是flip类型)

Android-PullToRefresh 之一:概要设计_第4张图片

  • 总结:
    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结构的区别”、“抽象功能和具体功能的区别”这两点对后面的详细设计十分重要!!!

你可能感兴趣的:(Android中级)