6

我有一个RecyclerView塞满了CardView. 我的代码本质上就是这篇官方文章的代码,而且运行良好,所以我的代码就不用在这里贴了。在那里。

如下所示:

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

正如预期的那样,所有CardViews 都会同时显示。

但我想要的是视图从视图外部到其正常位置一一显示。

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

有谁知道如何做到这一点?

4

2 回答 2

4

创建一个自定义项目动画器(或扩展默认动画器)并覆盖animateAdd,以便卡片从屏幕下方动画。有关详细信息,请参阅文档。未能正确实现它可能会导致丢失 ViewHolders,所以你应该小心。

运行动画的最佳方式是创建一个动画器,它的动画translationYrecyclerView.getHeight()0 开始。您可以查看DefaultItemAnimator以获取参考。

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

顺便说一句,RecyclerView 不“尚”支持滚动时的动画视图,因此animateAdd在用户滚动列表时添加新项目时不会调用。

于 2014-11-29T18:17:57.293 回答
1

您可以尝试在下面的项目中创建自定义 ItemAnimators。

https://github.com/gabrielemariotti/RecyclerViewItemAnimators

于 2014-11-29T06:10:36.807 回答