RecyclerView有很高的自由度,可以说只有想不到没有做不到,真是越用越喜欢。这次用超简单的方法,让RecyclerView带上折叠的效果。

效果是这样的。
总结一下这个列表的特点,就是以下三点:
1. 重叠效果;
2. 层次感;
3. 首项的差动效果。
下面我们来一个个解决。
我们新建一个ParallaxRecyclerView,让它继承RecyclerView,并使用LinearLayoutManager作为布局管理器。
重叠效果
其实就是每一项都搭一部分在它前面那项而已。我们知道,RecyclerView可以通过设置ItemDecoration来实现列表的间隔效果,有没有想过要是把间隔设为负数会怎么样?比如:
addItemDecoration(new ItemDecoration() {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state) {
super.getItemOffsets(outRect, view, parent, state);
outRect.bottom = -dp2px(context, 10);
}
});
没错,这就实现了我们的重叠效果。
层次感
在Material Design里是有Z轴这个概念的,我们可以给控件设置垂直于屏幕的高度,让不在同一高度的控件看起来有层次感。当然,我们要用Material Design的控件才有这个属性,这里我用的是CardView。
我们给ParallaxRecyclerView增加一个滑动监听,在onScrolled方法里面做如下设置:
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
int firstPosition = layoutManager.findFirstVisibleItemPosition();
int lastPosition = layoutManager.findLastVisibleItemPosition();
int visibleCount = lastPosition - firstPosition;
//重置控件的高度
int elevation = 1;
for (int i = firstPosition - 1; i <= (firstPosition + visibleCount) + 1; i++) {
View view = layoutManager.findViewByPosition(i);
if (view != null) {
if (view instanceof CardView) {
((CardView) view).setCardElevation(dp2px(context, elevation));
elevation += 5;
}
}
}
其中,setCardElevation方法就是用来给CardView设置高度的,这里让每一项的高度比它的上一项高5dp。
首项的差动
最后,我们想给第一项增加一个差动效果,这个同样在onScrolled方法里面做处理就好了:
View firstView = layoutManager.findViewByPosition(firstPosition); float firstViewTop = firstView.getTop(); firstView.setTranslationY(-firstViewTop / 2.0f);
这样相当于第一项的滑动速度变成原来的一半。但这也会导致一个问题, 由于改变了控件的位置,当这个控件被复用时,会出现位置不正确的情况。所以我们在设置高度的时候,可以顺便把控件的位置复原了:
float translationY = view.getTranslationY();
if (i > firstPosition && translationY != 0) {
view.setTranslationY(0);
}
这样就完成了一个带有简单折叠效果的RecyclerView了,妥妥的。
源码地址:ParallaxRecyclerView_jb51.rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# recyclerview
# 折叠
# recyclerview折叠显示
# recyclerview折叠效果
# Android Studio使用recyclerview实现展开和折叠功能(在之前的微信页面基础之上
# Android中RecyclerView实现多级折叠列表效果(二)
# Android中RecyclerView实现多级折叠列表效果(TreeRecyclerView)
# 一文搞懂Android RecyclerView点击展开、折叠效果的实现代码
# 差动
# 每一项
# 的是
# 也会
# 是有
# 是这样
# 可以说
# 设为
# 我们可以
# 这就
# 很高
# 可以通过
# 我用
# 才有
# 要用
# 第一项
# 想过
# 但这
# 一个问题
# 管理器
相关文章:
建站之星会员如何解锁更多建站功能?
如何在万网自助建站平台快速创建网站?
如何快速建站并高效导出源代码?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
建站主机功能解析:服务器选择与快速搭建指南
建站之星如何开启自定义404页面避免用户流失?
如何通过商城自助建站源码实现零基础高效建站?
h5网站制作工具有哪些,h5页面制作工具有哪些?
测试制作网站有哪些,测试性取向的权威测试或者网站?
如何打造高效商业网站?建站目的决定转化率
制作国外网站的软件,国外有哪些比较优质的网站推荐?
利用JavaScript实现拖拽改变元素大小
北京建设网站制作公司,北京古代建筑博物馆预约官网?
如何通过主机屋免费建站教程十分钟搭建网站?
建站之星免费版是否永久可用?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
如何在阿里云香港服务器快速搭建网站?
如何通过西部建站助手安装IIS服务器?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
北京网站制作的公司有哪些,北京白云观官方网站?
再谈Python中的字符串与字符编码(推荐)
如何挑选最适合建站的高性能VPS主机?
如何确保FTP站点访问权限与数据传输安全?
如何通过VPS建站实现广告与增值服务盈利?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
专业公司网站制作公司,用什么语言做企业网站比较好?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
建站之家VIP精选网站模板与SEO优化教程整合指南
在线制作视频的网站有哪些,电脑如何制作视频短片?
,石家庄四十八中学官网?
如何快速使用云服务器搭建个人网站?
如何在IIS中新建站点并配置端口与物理路径?
c# 在高并发场景下,委托和接口调用的性能对比
临沂网站制作企业,临沂第三中学官方网站?
c# 在ASP.NET Core中管理和取消后台任务
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
如何用搬瓦工VPS快速搭建个人网站?
如何通过虚拟机搭建网站?详细步骤解析
广州营销型建站服务商推荐:技术优势与SEO优化解析
招商网站制作流程,网站招商广告语?
定制建站流程解析:需求评估与SEO优化功能开发指南
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
学校建站服务器如何选型才能满足性能需求?
,南京靠谱的征婚网站?
制作农业网站的软件,比较好的农业网站推荐一下?
建站之星×万网:智能建站系统+自助建站平台一键生成
如何用美橙互联一键搭建多站合一网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。