8

我正在使用垂直 LinearLayout 管理器和 DefaultItemAnimator 构建一个相对简单的 RecyclerView。它只会处理添加和删除项目(没有动画更改、交换、移动等)

我的项目将添加到列表中的特定位置,因为它按特定顺序排序,因此列表必须滚动到添加项目的位置才能显示给用户。

还有一个棘手的部分——LinearLayoutManager 和 DefaultItemAnimator 似乎不是为了支持预测动画而构建的。目前,由于滚动,所有出现的项目都是动画的,而不仅仅是新添加的项目,我想只在新项目上运行特定的动画。

首先,我在这里阅读了文档,其中说:

想要更好的项目动画体验的 LayoutManager,其中项目可以根据项目不在屏幕上时的存在位置在屏幕上和屏幕上进行动画处理,然后 LayoutManager 应该从 supportPredictiveItemAnimations() 返回 true并向 onLayoutChildren(回收商,州)

这是 的文档RecyclerView.LayoutManager,所以LinearLayoutManager作为一个孩子应该已经有了额外的逻辑(或者没有?)

问题是它的onLayoutChildren方法太复杂了,我不确定我应该修改哪个部分才能区分“出现在屏幕上”和“全新”视图。

我还阅读了本教程,它解决了我的确切问题,但该示例使用了 FixedGridLayoutManager,而且我发现理解和调整整个布局逻辑太复杂了。

我不是在寻找现成的复制粘贴解决方案,但我需要一些关于理解布局功能的线索。恐怕自己写一个,除了乏味之外,肯定会产生更糟糕的结果,因为里面已经有200行代码了,都是比我聪明的人写的^^

理想情况下,我想添加一些东西,或者做一些小的改动,以免破坏整个测量、报废、回收以及那里发生的任何其他复杂的事情。

在此先感谢,欢迎任何帮助

4

0 回答 0