android view 入场动画 退场动画,RecycleView入场动画 GridLayoutAnimation

本文介绍了如何在Android中使用GridLayoutAnimation为RecyclerView创建网格布局的入场和退场动画,解决LayoutAnimation在grid场景下的问题,通过自定义GridRecyclerView实现所需动画效果。
摘要由CSDN通过智能技术生成

介绍

这是本教程的第二部分,也是最后一部分。第一部分我们讲述了RecyclerView用于列表的例子,文章见:

在第一部分中我们演示了如何使用自定义的动画渲染一个RecyclerView的初始加载。采用的是LayoutAnimation,效果也不错。这篇文章我们谈谈如何用类似的方法去处理grid。

本教程的demo项目List和Grid的例子都有,在这里:

apk见 这里!

为什么grid场景下会有所不同?

首先采用第一部分中的方法完全可以在grid上很好的工作,没有crash,动画也是相同的运作方式。但是 LayoutAnimation与使用GridLayoutManager的RecyclerView得到的结果是这样的:

dc22c33a395a

1503131496370933.gif

左边是LayoutAnimation的grid,右边是我们想要的效果。

之所以会这样是因为item的动画是基于它在grid中的线性位置来的(从左到右,从上到下),所以才会制造出奇怪的动画。我们想要的是不同列与行上的item同时运行,这样就能减短持续时间。概括起来就是我们需要对动画的顺序和延迟有更多的控制。

所以开始吧

为了解决这个问题,我们将使用GridLayoutAnimation。基本上它就是一个LayoutAnimation,但是可以为行与列定义delay,同时还允许设置 layout animation的方向。这就使得我们能更好的控制一个特定item的动画,更容易让多个item的动画同时运行。

首先在 res/anim/下创建一个名为grid_layout_animation_from_bottom.xml的文件,然后添加:

xmlns:android="http://schemas.android.com/apk/res/android"

android:animation="@anim/item_animation_from_bottom"

android:animationOrder="normal"

android:columnDelay="15%"

android:rowDelay="15%"

android:direction="top_to_bottom|left_to_right"

/>

其中:

android:animation="@anim/item_animation_from_bottom”

定义布局中的每个item所要应用的动画

android:animationOrder="normal"

可以选择三种类型:normal, reverse 以及 random。它控制内容动画的顺序。Normal:遵循direction和delay所定义的顺序;Reverse的顺序恰好跟Normal相反;Random为随机的顺序。

android:columnD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值