Android-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):头部、内容区域、尾部
具体的UI结构
具体的UI结构(具体的PullToRefresh,如PullToRefreshListView、PullToRefreshHorizontalScrollView等):
PullToRefreshListView(header是rotate类型)
PullToRefreshHorizontalScrollView(header是flip类型)
- 总结:
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结构的区别”、“抽象功能和具体功能的区别”这两点对后面的详细设计十分重要!!!