RecyclerView的动画人口

时间:2014-11-29 02:55:02

标签: android android-animation android-recyclerview android-cardview

我有一个RecyclerView塞满了CardView的集合。我的代码基本上是this official文章中的代码,并且工作正常,因此无需在此处发布我的代码。在那里。

看起来如下:

+------------------------------+
| +------------+ +------------+ |
| |   card 1   | |            | |
| +------------+ +------------+ |
| +------------+ +------------+ |
| |            | |            | |
| +------------+ +------------+ |
| +------------+ +------------+ |
| |            | |            | |
| +------------+ +------------+ |
| +------------+ +------------+ |
| |            | |   card N   | |
| +------------+ +------------+ |
+-------------------------------+

所有 CardViews 会按预期同时显示。

但我想要的是视图从视图外一个接一个地显示到它的正常位置。

+-------------------------------+         +-------------------------------+
| +------------+                |         | +------------+ +------------+ |
| |   card 1   |                |         | |   card 1   | |   card 2   | |
| +------------+                |         | +------------+ +------------+ |
|                      ^        |         |                               |
|                      |        |         |                               |
|                      |        |         |                               |
|                      |        |         |                               |
|                      |        |         |       ^                       |
|                      |        |         |       |                       |
|                      |        |         |       |                       |
|                      |        |         |       |                       |
|                      |        |         |       |                       |
+----------------------|--------+         +-------|-----------------------+
                  ------------+             +------------+ 
                 |   card 2   |             |   card 3   |   
                 +------------+             +------------+    

有谁知道怎么做?

2 个答案:

答案 0 :(得分:4)

创建自定义项目动画(或扩展默认项目)并覆盖animateAdd,以便卡片从屏幕下方生成动画。有关详细信息,请参阅documentation。如果未能正确实施,可能会导致ViewHolders丢失,因​​此您应该小心。

运行动画的最佳方法是创建一个动画制作工具,将动态translationYrecyclerView.getHeight()设为0。您可以查看DefaultItemAnimator以获取参考。

顺便说一下,在第一个布局过程中,RecyclerView不会为视图设置动画,因为它看起来很奇怪。要克服它,最初保持适配器为空,在第一次布局通过后,添加项目(您可以使用处理程序并将项目推迟到适配器)。

顺便说一句,RecyclerView还没有'支持在滚动时设置视图动画,以便在用户滚动列表时添加新项目时不会调用animateAdd

答案 1 :(得分:1)

您可以尝试创建自定义ItemAnimators,如下面的项目所示。

https://github.com/gabrielemariotti/RecyclerViewItemAnimators