更纯粹的下拉刷新和加载更多

标签: 下拉刷新 加载更多
16170人阅读 评论(5) 收藏 举报
分类:

版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com


在不久前的很多下拉刷新框架都带有上拉加载更多的功能,加载更多的功能可以动态关闭或者打开。再比如ListViewGridView是通过添加HeaderViewFooterView来实现了下拉刷新和上拉加载更多的,我们认为这是设计上的缺陷,同时也影响了我们实现更加复杂布局。

我认为更纯粹的下拉刷新只需要做它自己的事 —— 下拉刷新,下拉刷新也不该占用ContentViewHeader
上拉加载的方式应该被替代成Content自己处理加载更多,比如当我们上滑屏幕中的ContentList快到底部时自动加载更多。

设计

一个更加纯粹的下拉刷新和加载更多应该是这样的:
1. 外部是一个下拉刷新的RefreshLayout, 内含HeaderViewContentView
2. HeaderView是头部,展示刷新相关动画。
3. ContentView是内容,比如ListViewScrollViewRecyclerView等。
4. 加载更多回归给ContentView去做,content是否有更多,如何加载,应该由它自己决定。

下面是一个概念图:

    |  +--------------+  |                   ——|
    |  | Header View  |  |                     |
    |  +--------------+  |                     |
----+--------------------+----ScreenTop        |
    |  +--------------+  |                     |
    |  |              |  |                     |
    |  |              |  |                     |
    |  |              |  |                     | <---- RefreshLayout
    |  | Content View |  |                     |
    |  |              |  |  <---- Screen       |
    |  |              |  |                     |
    |  |              |  |                     |
    |  |              |  |                     |
    |  |              |  |                     |
    |  +--------------+  |                     |
    +--------------------+                   ——|

交互

HeaderViewContentView交互位置关系如下图:



    |  +--------------+  |    |  |              |  |    |  |              |  |
    |  |  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有:ListViewGridViewRecyclerView

理想中的操作应该是这样的:一、当我们的content滑动到靠近最后的item的时候自动加载更多并拼接到content中,二、当我们的content滑动到最后一个item的时候再去加载更多,并且展示一个加载更多的动画。

其实第一种方案特别好实现,监听scroll然后判断屏幕上显示的最后一个itemposition就可以了,对于第二种情况我这里推荐两个库:
1. LoadMore:https://github.com/yanzhenjie/LoadMore
2. SwipeRecyclerView:https://github.com/yanzhenjie/SwipeRecyclerView

第一个是针对ListViewGridView的封装,提供加载更多、GridView添加HeaderViewFooterView的功能。
第二个是针对RecyclerView的封装,加载更多、添加HeaderViewFooterViewItem侧滑菜单、拖拽排序、侧滑删除的功能。

参考:https://android-ultra-ptr.liaohuqiu.net/cn/,特别感谢秋百万同学,参考了cube-sdk的很多东西,大家有兴趣可以自己去了解一下:
https://github.com/liaohuqiu/cube-sdk

版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com

查看评论

android 开源框架之——下拉刷新,上拉加载更多总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] 最近项目中需要用到下拉刷新的功能,发现自己的写的不是很好,网上搜了一下,发现开源的框架好...
  • H_shaohui
  • H_shaohui
  • 2017年04月19日 15:18
  • 2379

RecyclerView侧滑菜单,滑动删除,长按拖拽,下拉刷新上拉加载

RecyclerView侧滑菜单,RecyclerView滑动删除,RecyclerView长按拖拽,RecyclerView下拉刷新上拉加载 版权声明:转载必须注明本文转自严振杰的博客: htt...
  • yanzhenjie1003
  • yanzhenjie1003
  • 2016年08月04日 06:56
  • 94819

下拉刷新,上拉自动加载更多

  • 2015年08月28日 13:07
  • 1.02MB
  • 下载

下拉刷新、查看更多

  • 2013年05月31日 14:49
  • 3.26MB
  • 下载

移动端下拉刷新、上拉加载更多插件dropload

参看 下载   https://github.com/pfan123/dropload 引用css和js html js内容 $('.element')...
  • qq_33769914
  • qq_33769914
  • 2016年11月04日 16:08
  • 7847

再也不用担心下拉刷新,上拉加载啦!-自定义ListView对上拉刷新,上拉加载的详解

前言:       看过许多下拉刷新的例子,好多大牛们的代码写的很完美,让人羡慕嫉妒恨~~~,可是,对于下拉刷新时的手势操作却没有给出详细的解释,当一堆堆逻辑代码出来的时候,对于我们这些菜鸟来说,理解...
  • yyh448522331
  • yyh448522331
  • 2015年10月12日 21:20
  • 2478

下拉刷新和上拉加载的原理

很多App中,新闻或者展示类都存在下拉刷新和上拉加载的效果,网上提供了实现这种效果的第三方类(详情请见MJRefresh和EGOTableViewPullRefresh),用起来很方便,但是闲暇之余,...
  • humingtao2013
  • humingtao2013
  • 2014年06月20日 09:20
  • 16209

Android 众多优秀的下拉刷新

众多优秀的下拉刷新
  • jcy2sls
  • jcy2sls
  • 2016年04月13日 15:42
  • 4598

android高端超漂亮的下拉刷新框架

  • 2015年07月02日 11:53
  • 5.67MB
  • 下载

RecyclerView 下拉刷新上拉加载更多

RecyclerView下拉刷新上拉加载更多封装
  • zly921112
  • zly921112
  • 2015年12月21日 10:46
  • 11426
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 169万+
    积分: 6700
    排名: 4398
    推荐
    欢迎关注我的公众号
    博客专栏