全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

android给RecyclerView加上折叠的效果示例

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小时内与您取得联系。