更纯粹的下拉刷新和加载更多
来源:互联网 发布:品牌女装淘宝店铺 编辑:程序博客网 时间:2024/05/22 06:27
版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com
在不久前的很多下拉刷新框架都带有上拉加载更多的功能,加载更多的功能可以动态关闭或者打开。再比如ListView
和GridView
是通过添加HeaderView
和FooterView
来实现了下拉刷新和上拉加载更多的,我们认为这是设计上的缺陷,同时也影响了我们实现更加复杂布局。
我认为更纯粹的下拉刷新只需要做它自己的事 —— 下拉刷新,下拉刷新也不该占用ContentView
的Header
。
上拉加载的方式应该被替代成Content
自己处理加载更多,比如当我们上滑屏幕中的ContentList
快到底部时自动加载更多。
设计
一个更加纯粹的下拉刷新和加载更多应该是这样的:
1. 外部是一个下拉刷新的RefreshLayout
, 内含HeaderView
和ContentView
。
2. HeaderView
是头部,展示刷新相关动画。
3. ContentView
是内容,比如ListView
、ScrollView
、RecyclerView
等。
4. 加载更多回归给ContentView
去做,content
是否有更多,如何加载,应该由它自己决定。
下面是一个概念图:
| +--------------+ | ——| | | Header View | | | | +--------------+ | |----+--------------------+----ScreenTop | | +--------------+ | | | | | | | | | | | | | | | | | <---- RefreshLayout | | Content View | | | | | | | <---- Screen | | | | | | | | | | | | | | | | | | | | | | +--------------+ | | +--------------------+ ——|
交互
HeaderView
和ContentView
交互位置关系如下图:
| +--------------+ | | | | | | | | | | | HeaderView | | | | | | | | | | | +--------------+ | | +--------------+ | | | | |----|--+--------------+--|----|--|--HeaderView--|--|----|--+--------------+--|----ScreenTop | | | | | +--------------+ | | | HeaderView | |----|--| |--|----|--| |--|----|--+--------------+--|----RefreshLimit | | | | | | | | | | | | | | Content View | | | | | | | | | | | | | | | | | | | | | | | | | | | | Content View | | | | | | | | | | | | | | | | Content View | | | | | | | | | | | | | | | | | | | | | | | | | | | +--------------+ | | | | | | | | | +--------------------+ +--|--------------|--+ +--|--------------|--+ +--------------+ | | +--------------+ 初始状态 未达刷新距离 达到刷新距离
其实我们更加希望HeaderView
可以灵活自定义,当然这不是概念设计层面的工作了,应该是框架API设计层面的事了。
下拉刷新
符合上面的设计理念的框架应该有不少,我个人比较推荐的有两款:
1. Google的Support官方库:SwipeRefreshLayout
2. 秋百万的:android-Ultra-Pull-To-Refresh
后者默认支持的HeaderView
比较多,而且很方便自定义HeaderView
,我前段时间基于该库写了一篇自定义下拉刷新视察动画的文章,也可以作为参考:
http://blog.csdn.net/yanzhenjie1003/article/details/53450488
忽悠了这么多不都是介绍下拉刷新吗?如何加载更多呢?且看下面分解…
加载更多
凡是有加载更多的页面,一般都是一个list(列表)页面,包括但不限于List、Grid、StaggeredGrid形式,那么常用的View
有:ListView
、GridView
、RecyclerView
。
理想中的操作应该是这样的:一、当我们的content
滑动到靠近最后的item
的时候自动加载更多并拼接到content
中,二、当我们的content
滑动到最后一个item
的时候再去加载更多,并且展示一个加载更多的动画。
其实第一种方案特别好实现,监听scroll
然后判断屏幕上显示的最后一个item
的position
就可以了,对于第二种情况我这里推荐两个库:
1. LoadMore:https://github.com/yanzhenjie/LoadMore
2. SwipeRecyclerView:https://github.com/yanzhenjie/SwipeRecyclerView
第一个是针对ListView
和GridView
的封装,提供加载更多、GridView
添加HeaderView
和FooterView
的功能。
第二个是针对RecyclerView
的封装,加载更多、添加HeaderView
和FooterView
,Item
侧滑菜单、拖拽排序、侧滑删除的功能。
参考:https://android-ultra-ptr.liaohuqiu.net/cn/,特别感谢秋百万同学,参考了cube-sdk的很多东西,大家有兴趣可以自己去了解一下:
https://github.com/liaohuqiu/cube-sdk
版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com
- 更纯粹的下拉刷新和加载更多
- 更纯粹的下拉刷新和加载更多
- 给RecyclerView最纯粹的下拉刷新和上拉加载更多
- 给RecyclerView最纯粹的下拉刷新和上拉加载更多
- 下拉刷新和加载更多
- listview的下拉刷新和上拉加载更多
- listview的上拉加载更多和下拉刷新
- 自定义ListView的下拉刷新和上拉加载更多
- Android_支持下拉刷新和加载更多的ExpandableListView
- RecyclerView的下拉刷新和加载更多 动画
- listview下拉刷新和加载更多的优化
- ListView下拉刷新和上拉加载更多的实现
- 下拉刷新--加载更多
- 下拉刷新和上拉加载更多
- Android-PullToRefresh:下拉刷新和加载更多
- 自定义下拉刷新和加载更多_Android
- RecyclerView下拉刷新和加载更多
- recyclerview下拉刷新和加载更多
- unix网路编程第一章 之环境搭建
- 使用Jenkins配置Git+Maven的自动化构建
- ajax联动获取select的值
- SQL基础
- 链表翻转----逆置链表的变形
- 更纯粹的下拉刷新和加载更多
- caffe的相关配置
- Android RecyclerView 使用完全解析 体验艺术般的控件
- C++中汉字字符串的截取
- AtCoder Grand Contest 018 A Getting Difference(比较水。。。)
- 注册了博客,感觉自己就很帅~
- k-Means聚类算法实现--基于西瓜数据4.0
- ios 判断是iphone还是ipad
- java设计模式之代理模式