recycleview横向展开_Android Recyclerview Expand item 展开动画

另附上视频:

Android 中间展开动画.mp4

之前看到飞书月视图在列表中点击,在上下两个item之间展开,想到ExpandableListView似乎有类似的操作,但是还无法满足需求,后来看到有个demo是recyclerview的展开效果,附上地址:

RecyclerView: Animate item resize

虽然依然无法满足需求,但是思路很清晰,点击的时候做属性动画,增加或减小expandview的大小来达到展开的效果;

当时看到这个demo的时候依然有几个问题需要解决:

1、目标实现是多列的,每一行下方会对应一个可横向滚动的布局,对应该行的列,每次点击不同的列,会切换下方滚动,而不会收起,只有点击了同一列才会收起

2、点击不同的行,先收起,再展开

3、目标实现item本身会滚动到顶部,将下一个item滚到到底部

4、每一行对应的滚动布局即ExpandView是静止不动的

带着这几个问题咱们来一一解决:

1、最初是设想使用GridLayoutManager来解决多列的问题,发现①下方滚动布局无法展开;②收起时,需要做多列的处理,于是想到了其实可以是一列,只是展示成多列的样子,于是我使用了两个textview放到了一行中(多列的话,可以使用RecyclerView),展示出来虽然是多列的样子,实际还是一列,下方则用viewpager来作为滚动布局,监听互动

2、既然是属性动画,那就可以监听动画的开始和结束,当点击不同行时,先进行关闭动画,在关闭动画结束时,进行展开动画,只需提前输入要展开的布局即可

3、我在外围使用了LinearLayout,当目标item展开时候,使用LinearLayout.LayoutParams的topMargin达到使item滚动到顶部的效果

4、ExpandView静止不动,其实也可以使用LinearLayout.LayoutParams的topMargin来解决,既然是相对静止,那设置成与Item本身不同的值即可,但是这时候引来了别的问题,ExpandView设置topMargin展示在Title的Z轴方向上方,这样就无法达成效果了,后来把Title的Z轴太高,并且设置透明背景即可

当然因为是demo,所以我并没有太在意代码样式和规范,各位可自行优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中的RecyclerView是一种非常常用的布局控件,可以实现各种各样的列表展示效果。其中,横向轮播是一种常见的布局效果,可以让多个项以横向滚动的方式展示在屏幕上。 要实现横向轮播的效果,首先我们需要在RecyclerView的LayoutManager中设置一个横向滚动的布局管理器,可以使用LinearLayoutManager,并将其方向设置为HORIZONTAL,这样列表项就会在水平方向上滚动。 实现横向轮播还需要用到RecyclerView的适配器(Adapter),我们可以自定义一个继承自RecyclerView.Adapter的适配器类,并在其中重写必要的方法,比如onCreateViewHolder()、onBindViewHolder()和getItemCount()等。在getItemCount()方法中,我们可以设置列表项的个数,根据实际需求来决定。 接下来,我们需要在onBindViewHolder()方法中将数据与列表项进行绑定。这意味着我们需要给每个列表项设置数据,比如图片、文字等。可以使用一个集合来存储需要展示的数据,在onBindViewHolder()方法中,可以根据当前列表项的位置来获取对应的数据,并将其设置到列表项控件中。 最后,在MainActivity或者其他的类中,将RecyclerView与自定义的适配器进行关联,然后将数据传递给适配器,并将适配器设置给RecyclerView。这样,当RecyclerView显示在屏幕上时,适配器会根据数据源来创建列表项,并在每次滚动时更列表项的内容。 总之,通过设置RecyclerView的LayoutManager为横向滚动的布局管理器,并自定义一个适配器来设置数据与列表项的绑定,就可以实现AndroidRecyclerView横向轮播效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值