Android PullToRefresh 分析之一、初识PullToRefresh
2015-12-17 15:13
323 查看
转载请标明出处:
/article/7691963.html
本文出自:【Kevin.zhou的博客】
前言:虽然刷新加载的开源框架有很多,但是还是觉得PullToRefresh最好用,易于扩展,可配置项也比较多。接下来会用一系列博客来分析该框架的使用以及扩展。
也许有朋友会说为什么PullToRefresh,而不是其他的刷新加载框架呢?我觉得xxx也挺好啊,代码简单,而且可以加载任意布局,为毛看不起人家。
说明下:
PullToRefresh是很多项目都是用的框架,我也是收罗了很多刷新加载框架,最后还是选择
PullToRefresh,并不是说它有多么牛X,只是很多效果我们用它就可以实现或者是只要做简单的扩展。
至于用PullToRefreshListView只能是ListView,
PullToRefreshGridView只能是
GridView,其实是PullToRefreshScrollView不就是想放什么就放什么吗。我想用RecyclerView,ListView不能体现出我高大的逼格
。其实扩展PullToRefreshRecyclerView也是比较简单的,如果大家嫌麻烦,我后续会提供的。
PullToRefresh不是万能的,也不能满足奇形怪状的
需求,使用的原则是更快更高效的满足需求以及能留下需求更改的空间,说不准什么时候需求又改了。
三、源码下载
该项目依然是托管在gitHub上,首先把源码下载下来。项目地址
结构比较简单就是顶部的“刷新头部”、底部的“加载尾部”以及中间的“内容区域”。如下图所示:
![](http://img.blog.csdn.net/20151217154317078?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
既然UI结构自上而下分为三段,头部、尾部和内容区域,那么在LinearLayout中放置三个ViewGroup类型的布局就可以了;
其中"刷新头部"、"加载尾部"按照给定的样式来写,当然有的可能只有"刷新头部"或只有"加载尾部";
正常情况下隐藏"刷新头部"和"加载尾部";
"内容区域"可以响应手指在屏幕Y方向滑动事件;
"内容区域"向下滑动显示"刷新头部"布局,向上滑动显示"加载尾部"布局;
"内容区域"随手指滑动到一定位移则促发刷新或加载的动作;
![](http://img.blog.csdn.net/20151217154704459?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
通过类图可以得到以下结论
PullToRefreshScrollView非常简单,只是覆盖了3个父类的抽象方法;
PullToRefreshBase类代码非常多,定义了刷新加载的绝大部分逻辑;
PullToRefreshBase的操作依靠IPullToRefresh接口规范;
我们所说的三部分在PullToRefreshBase中体现为HeaderLayout、FooterLayout、RefreshableViewWrapper(刷新布局的父控件),这里相当于一个容器来存放可以刷新的布局,在PullToRefreshScrollView中就是存放的ScrollView;
本文主要是对PullToRefresh框架的简单认识,了解了刷新加载的UI结构,下篇《Android
PullToRefresh 分析之二、UI结构》会通过源码来分析UI结构。
/article/7691963.html
本文出自:【Kevin.zhou的博客】
前言:虽然刷新加载的开源框架有很多,但是还是觉得PullToRefresh最好用,易于扩展,可配置项也比较多。接下来会用一系列博客来分析该框架的使用以及扩展。
一、 闲扯
相信大家都有一批自己收藏的刷新加载框架,样式千变万化,效果炫酷
![](file:///C:/Users/zhouwk/AppData/Local/YNote/data/qq088444EB65E6A0D190F3867750CDA10F/ebd06b885df84cb7a15897984758a0c3/007128b7.png)
。
![](http://img.blog.csdn.net/20151217143854656?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
但是真正用的时候就是那几样,应为我们的需求是这样的,“你给我做一个跟微博样的刷新”、“京东的刷新效果不错,我们仿一仿”。当我们听到之后的心情是这样的。
![](file:///C:/Users/zhouwk/AppData/Local/YNote/data/qq088444EB65E6A0D190F3867750CDA10F/e3d1468c69cb42c6801a4c1049f02260/clipboard.png)
![](http://img.blog.csdn.net/20151217143936469?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
骂完之后我们就去找在那个框架上修改比较好,有没有一劳永逸的方式呢?答案是肯定的,没有。但是我们可以尽可能的懒点。
二、为毛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结构,下篇《AndroidPullToRefresh 分析之二、UI结构》会通过源码来分析UI结构。
相关文章推荐
- ubuntu下如何安装android studio
- Android之ListView/GridView 优化
- Android 源码中修改某些文件的时间戳方法
- Android官方文档翻译 十七 4.1Starting an Activity
- Android开发之定制自己的日志工具类
- Android 用户使用崩溃处理
- android适配解决方案
- 页面未随软键盘上升及android隐藏软键盘总结
- Android自定义View之吃豆人动画(一)
- 【Android开发基础】应用界面主题Theme使用方法
- 获取android版本号
- Android Root权限静默安装
- Android 解析doc、excel
- Android系统音量取消关联
- Android sqlite版本更新大致方案
- Android存储之SQLite数据库
- Android存储之SQLite数据库
- Android 尺寸单位转换和屏幕适配相关
- android常用应用的包名和startAcitivity名
- AndroidManifest.xml文件解析