Android PullToRefresh 分析之一、初识PullToRefresh

转载请标明出处:
http://blog.csdn.net/xuehuayous/article/details/50341409
本文出自:【Kevin.zhou的博客】

前言:虽然刷新加载的开源框架有很多,但是还是觉得PullToRefresh最好用,易于扩展,可配置项也比较多。接下来会用一系列博客来分析该框架的使用以及扩展。


一、 闲扯

相信大家都有一批自己收藏的刷新加载框架,样式千变万化,效果炫酷
但是真正用的时候就是那几样,应为我们的需求是这样的,“你给我做一个跟微博样的刷新”、“京东的刷新效果不错,我们仿一仿”。当我们听到之后的心情是这样的。Android PullToRefresh 分析之一、初识PullToRefresh_第1张图片骂完之后我们就去找在那个框架上修改比较好,有没有一劳永逸的方式呢?答案是肯定的,没有。但是我们可以尽可能的懒点。

二、为毛PullToRefresh

    也许有朋友会说为什么PullToRefresh,而不是其他的刷新加载框架呢?我觉得xxx也挺好啊,代码简单,而且可以加载任意布局,为毛看不起人家。
说明下:
  • PullToRefresh是很多项目都是用的框架,我也是收罗了很多刷新加载框架,最后还是选择
    PullToRefresh,并不是说它有多么牛X,只是很多效果我们用它就可以实现或者是只要做简单的扩展。
  • 至于用PullToRefreshListView只能是ListView,
    PullToRefreshGridView只能是
    GridView,其实是PullToRefreshScrollView不就是想放什么就放什么吗。我想用RecyclerView,ListView不能体现出我高大的逼格
    。其实扩展PullToRefreshRecyclerView也是比较简单的,如果大家嫌麻烦,我后续会提供的。
  • PullToRefresh不是万能的,也不能满足奇形怪状的
    需求,使用的原则是更快更高效的满足需求以及能留下需求更改的空间,说不准什么时候需求又改了。

三、源码下载

    该项目依然是托管在gitHub上,首先把源码下载下来。项目地址
 

四、UI结构

 1. 结构拆分

  • 结构比较简单就是顶部的“刷新头部”、底部的“加载尾部”以及中间的“内容区域”。如下图所示:

  2. 结构组合

  • 既然UI结构自上而下分为三段,头部、尾部和内容区域,那么在LinearLayout中放置三个ViewGroup类型的布局就可以了;
  • 其中"刷新头部"、"加载尾部"按照给定的样式来写,当然有的可能只有"刷新头部"或只有"加载尾部";
  • 正常情况下隐藏"刷新头部"和"加载尾部";
  • "内容区域"可以响应手指在屏幕Y方向滑动事件;
  • "内容区域"向下滑动显示"刷新头部"布局,向上滑动显示"加载尾部"布局;
  • "内容区域"随手指滑动到一定位移则促发刷新或加载的动作;


五、项目结构


    挑选出PullToRefresh框架中最简单的PullToRefreshScrollView,来看下类图:
    通过类图可以得到以下结论
  • PullToRefreshScrollView非常简单,只是覆盖了3个父类的抽象方法;
  • PullToRefreshBase类代码非常多,定义了刷新加载的绝大部分逻辑;
  • PullToRefreshBase的操作依靠IPullToRefresh接口规范;
  • 我们所说的三部分在PullToRefreshBase中体现为HeaderLayout、FooterLayout、RefreshableViewWrapper(刷新布局的父控件),这里相当于一个容器来存放可以刷新的布局,在PullToRefreshScrollView中就是存放的ScrollView;

六、结语

    
    本文主要是对PullToRefresh框架的简单认识,了解了刷新加载的UI结构,下篇《Android PullToRefresh 分析之二、UI结构》会通过源码来分析UI结构。

你可能感兴趣的:(android,源码分析,pulltorefresh)