我有一个RecyclerView
塞满了CardView
的集合。我的代码基本上是this official文章中的代码,并且工作正常,因此无需在此处发布我的代码。在那里。
看起来如下:
+------------------------------+
| +------------+ +------------+ |
| | card 1 | | | |
| +------------+ +------------+ |
| +------------+ +------------+ |
| | | | | |
| +------------+ +------------+ |
| +------------+ +------------+ |
| | | | | |
| +------------+ +------------+ |
| +------------+ +------------+ |
| | | | card N | |
| +------------+ +------------+ |
+-------------------------------+
所有 CardViews 会按预期同时显示。
但我想要的是视图从视图外一个接一个地显示到它的正常位置。
+-------------------------------+ +-------------------------------+
| +------------+ | | +------------+ +------------+ |
| | card 1 | | | | card 1 | | card 2 | |
| +------------+ | | +------------+ +------------+ |
| ^ | | |
| | | | |
| | | | |
| | | | |
| | | | ^ |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
+----------------------|--------+ +-------|-----------------------+
------------+ +------------+
| card 2 | | card 3 |
+------------+ +------------+
有谁知道怎么做?
答案 0 :(得分:4)
创建自定义项目动画(或扩展默认项目)并覆盖animateAdd
,以便卡片从屏幕下方生成动画。有关详细信息,请参阅documentation。如果未能正确实施,可能会导致ViewHolders丢失,因此您应该小心。
运行动画的最佳方法是创建一个动画制作工具,将动态translationY
从recyclerView.getHeight()
设为0。您可以查看DefaultItemAnimator以获取参考。
顺便说一下,在第一个布局过程中,RecyclerView不会为视图设置动画,因为它看起来很奇怪。要克服它,最初保持适配器为空,在第一次布局通过后,添加项目(您可以使用处理程序并将项目推迟到适配器)。
顺便说一句,RecyclerView还没有'支持在滚动时设置视图动画,以便在用户滚动列表时添加新项目时不会调用animateAdd
。
答案 1 :(得分:1)
您可以尝试创建自定义ItemAnimators,如下面的项目所示。
https://github.com/gabrielemariotti/RecyclerViewItemAnimators