您的位置:首页 > 移动开发 > Android开发

Android PullToRefresh 分析之一、初识PullToRefresh

2015-12-17 15:13 323 查看
转载请标明出处:

/article/7691963.html

本文出自:【Kevin.zhou的博客】

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

一、 闲扯


相信大家都有一批自己收藏的刷新加载框架,样式千变万化,效果炫酷




但是真正用的时候就是那几样,应为我们的需求是这样的,“你给我做一个跟微博样的刷新”、“京东的刷新效果不错,我们仿一仿”。当我们听到之后的心情是这样的。



骂完之后我们就去找在那个框架上修改比较好,有没有一劳永逸的方式呢?答案是肯定的,没有。但是我们可以尽可能的懒点。

二、为毛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结构。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: