带头尾和动画的下拉刷新RecyclerView
项目地址:https://github.com/shichaohui/AnimRefreshRecyclerView
项目中包括一个demo(普通Androidproject)和Android Library,感兴趣的同学能够自己下载源代码和Demo。
感谢bingaicao1提供的帮助。
效果预览,嗯…看起来有点卡。截图软件的问题:
上图中演示了三种不同的布局和下拉效果,三种布局和三种下拉效果能够通过Header的设置随意组合。
图中普通列表是ListView样式,没有设置Header和Footer,使用默认的下拉刷新和上拉载入。
宫格列表使用的是自己定义Header和Footer的下拉刷新和上拉上拉载入,并设置了下拉使放大的图片。
瀑布流列表使用的是自己定义Header和Footer的下拉刷新和上拉上拉载入。没有设置了下拉使放大的图片。使用默认的刷新动画。
使用方法:
Gradle:
dependencies {
compile 'com.android.support:recyclerview-v7:23.1.0'
compile 'com.sch.rfview:AnimRefreshRecyclerView:1.0.6@aar'
}
Eclipse的同学们能够自己下载源代码拷贝java文件到自己的project(别忘了引用RecyclerView的包哦)。
代码中的配置參考以下的使用方法代码片段,除了RecyclerView自带的方法,其它方法都是可选的。
依据列表的不同效果选择不同的布局管理器:
// 使用重写后的线性布局管理器
mRecyclerView.setLayoutManager(new AnimRFLinearLayoutManager(this));
// 使用重写后的格子布局管理器
mRecyclerView.setLayoutManager(new AnimRFGridLayoutManager(this, 2));
// 使用重写后的瀑布流布局管理器
mRecyclerView.setLayoutManager(new AnimRFStaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL));
依据不同的布局管理器设置切割线:
// 设置列表布局的切割线
mRecyclerView.addItemDecoration(new DividerItemDecoration(context,
mAnimRFLinearLayoutManager.getOrientation(), true));
// 设置网格或者瀑布流布局的切割线
mRecyclerView.addItemDecoration(new DividerGridItemDecoration(context, true));
设置Header和Footer:
// 头部
headerView = LayoutInflater.from(this).inflate(R.layout.header_view, null);
// 脚部
footerView = LayoutInflater.from(this).inflate(R.layout.footer_view, null);
// 加入头部和脚部,假设不加入就使用默认的头部和脚部(头部能够有多个)
mRecyclerView.addHeaderView(headerView);
// 设置头部的最大拉伸倍率,默认1.5f,必须写在setHeaderImage()之前
mRecyclerView.setScaleRatio(2.0f);
// 设置下拉时拉伸的图片。不设置就使用默认的
mRecyclerView.setHeaderImage((ImageView) headerView.findViewById(R.id.iv_hander));
mRecyclerView.addFootView(footerView);
能够通过addHeaderView()和setHeaderImage()方法随意组合下拉效果,能够调用多次addHeaderView()方法加入多个头部,可是setHeaderImage()方法最多被调用一次。
最多调用一次addFootView()方法,即最多设置一个FooterView。
其它设置:
// 设置刷新动画的颜色(可选)
mRecyclerView.setColor(Color.RED, Color.WHITE);
// 设置头部恢复动画的运行时间。默认500毫秒(可选)
mRecyclerView.setHeaderImageDurationMillis(1200);
// 设置拉伸到最高时头部的透明度。默认0.5f(可选)
mRecyclerView.setHeaderImageMinAlpha(0.6f);
// 设置适配器
mRecyclerView.setAdapter(new MyAdapter());
// 设置刷新和载入很多其它数据的监听,分别在onRefresh()和onLoadMore()方法中运行刷新和载入很多其它操作
mRecyclerView.setLoadDataListener(new AnimRFRecyclerView.LoadDataListener() {
@Override
public void onRefresh() {
// 开启线程刷新数据
new Thread(new MyRunnable()).start();
}
@Override
public void onLoadMore() {
// 开启线载入很多其它数据
new Thread(new MyRunnable()).start();
}
});
手动刷新
假设想第一次进入界面时就显示载入数据的动画。须要使用手动刷新的方法。
此方法须要在其它设置完毕后调用,详细使用能够看这里
mRecyclerView.setRefresh(true);
在刷新和载入过很多其它完毕之后调用代码停止动画:
// 刷新完毕后调用,必须在UI线程中
mRecyclerView.refreshComplate();
// 载入很多其它完毕后调用。必须在UI线程中
mRecyclerView.loadMoreComplate();
禁止刷新
假设不想使用自带的刷新效果,而想要使用SwipRefreshLayout做刷新。可使用以下代码禁止自带的刷新效果
mRecyclerView.setRefreshEnable(false);
Tips:
- 若在使用过程中发现adapter.notifyDataSetChange()等更新数据的方法无效,可使用recyclerView.getAdapter()获取当前使用的Adapter,并使用获取到到Adapter更新数据。
EDN
欢迎大家提出改进建议和意见
带头尾和动画的下拉刷新RecyclerView的更多相关文章
- 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载
title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...
- RecyclerView的下拉刷新和加载更多 动画
下拉刷新和加载更多 1.https://github.com/jianghejie/XRecyclerView 2.http://blog.csdn.net/jabony/article/detail ...
- 下拉刷新控件(3)系统自带的下拉刷新控件SwipeRefreshLayout(推荐*)
1,简介 The SwipeRefreshLayout should be used whenever the user can refresh the contents of a view via ...
- H5下拉刷新特效demo,动画流畅
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- [Swift通天遁地]二、表格表单-(4)使用系统自带的下拉刷新控件,制作表格的下拉刷新效果
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Android 聊天表情输入、表情翻页带效果、下拉刷新聊天记录
经过一个星期的折腾,最终做完了这个Android 聊天表情输入.表情翻页带效果.下拉刷新聊天记录.这仅仅是一个单独聊天表情的输入,以及聊天的效果实现.由于我没有写server,所以没有两方聊天的效果. ...
- Android PullToRrefresh 自定义下拉刷新动画 (listview、scrollview等)
PullToRefreshScrollView 自定义下拉刷新动画,只需改一处. 以下部分转载自http://blog.csdn.net/superjunjin/article/details/450 ...
- 使用MJRefresh自定义下拉刷新,上拉加载动画
有时候我们需要自己设置下拉刷新,上拉加载动画的实现,这里主要是记录下使用MJRefresh自定义下拉刷新,上拉加载动画..... 下拉刷新我们只需要继承MJRefreshGifHeader即可: 实现 ...
- mescroll.js简单的上拉加载、下拉刷新插件,带完整注释
声明:本插件模仿自mescroll.js,随手所作,仅以注释提供思路,只实现了部分效果,且没有考虑兼容,有兴趣的朋友随意一看.api大家可参考mescroll.js API汇总一文. demo:点我下 ...
随机推荐
- 我用的主机,推荐给大家【gegehost】【戈戈主机】
炎炎夏日冰点价格:戈戈主机史上最大优惠促销活动 1.7月1日至8日:买主机优惠大促销:主机买一送一,不限购买数量 请您通过客户中心或者淘宝购买一个主机之后,登录客户中心,提交问题, 提供要赠送的主机的 ...
- java规范与标准?
所谓规范,即指由很多人同时遵守的行为或理论. java的规范并不是指其中一种,而是有很多种,比如java编码规范,java命名规范,java虚拟机规范等等,甚至于一个编码规范都有很多种,不同的公司.组 ...
- cksum - 一个文件的检查和以及字节数
SYNOPSIS(总览) ../src/cksum [OPTION]... [FILE]... DESCRIPTION(描述) 输出CRC(循环冗余校验码)检查和以及每个FILE的字节数. --hel ...
- asp.net的请求管道事件
一.引言 上篇介绍了Http的请求过程提到了在请求进入到创建完 HttpApplication 对象后,将进入一系列的处理事件Event,那么这些事件具体都有哪些呢,这篇文章就来简要阐述一下. 二.正 ...
- 计算机中的CPU
今天写一下计算机中最核心的一部分,就是计算机的大脑---CPU.CPU也就是中央处理器(Central Processing Unit).中央处理器是一块超大规模的集成电路,是一台计算机的运算核心(C ...
- vue -vantUI tab切换时 list组件不触发load事件解决办法
最近由于公司项目需要,用vue写了几个简单的页面.用到了vantUI List 列表 瀑布流滚动加载,用于控制长列表的展示 当列表即将滚动到底部时,会触发事件并加载更多列表项. (页面加载完成后默认会 ...
- vue 画二维码
首先安装一下相关的插件 qrcode2 npm install --save qrcode2 然后在需要画二维码的页面引入一下 import QRCode from 'qrcode2' 最后在meth ...
- vue 改变插值方法
Vue默认的插值是双大括号{{}}.但有时我们会有需求更改这个插值的形式. delimiters:['${','}'] //必须要用一个数组来接收,用逗号隔开.
- 向数据库添加中文数据乱码的解决办法(本文使用spring-jdbcTemplate)
由于编码字符集的不同通常容易导致数据库中文乱码问题,如显示问号. 往往由以下三个方面所造成的 (一):数据库端字符集设置 1.安装mysql时,会有一个数据库编码设置,将其设置为utf-8 2.先设置 ...
- 利用端口转发来访问virtualbox虚拟机centos6的jupyter notebook
1.除了在virtualbox中设置常规的端口转发外,还需要在windows上打开cmd,输入ssh -N -f -L localhost:8888:localhost:8889 -p 22 root ...