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

android给RecyclerView加上折叠的效果示例,第1张

概述RecyclerView有很高的自由度,可以说只有想不到没有做不到,真是越用越喜欢。这次用超简单的方法,让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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的android给RecyclerView加上折叠的效果示例全部内容,希望文章能够帮你解决android给RecyclerView加上折叠的效果示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1146864.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存