我正在构建一个相对简单的RecyclerView,使用垂直LinearLayout Manager和DefaultItemAnimator。它只会处理添加和删除项目(没有动画更改,交换,移动等)
我的项目将添加到列表中的特定位置,因为它按特定顺序排序,因此列表必须滚动到添加项目的位置,以便向用户显示。
还有一个棘手的部分 - LinearLayoutManager和DefaultItemAnimator似乎不是为了支持预测动画而构建的。目前,由于滚动,所有出现的项目都是动画的,而不仅仅是新添加的项目,我想仅在新项目上运行特定的动画。
首先,我已阅读文档here,其中说:
布局管理器想要更好的项目动画体验,在哪里 可以根据位置在屏幕上和屏幕上设置动画 当项目不在屏幕上时存在,然后是LayoutManager 应该从supportsPredictiveItemAnimations()和添加返回true onLayoutChildren(Recycler,State)的其他逻辑
这是RecyclerView.LayoutManager
的文档,因此作为孩子的LinearLayoutManager
应该已经有了额外的逻辑(或不是吗?)
问题是它的onLayoutChildren
方法过于复杂,而且我不确定我应该修改哪个部分以便区分出现在屏幕上的#34;"来自"全新"视图。
我还阅读了this tutorial,它解决了我的确切问题,但该示例使用的是FixedGridLayoutManager,而且我再次发现它太复杂,无法理解和调整整个布局逻辑。
我不是在寻找一个现成的复制粘贴解决方案,但我需要一些关于理解布局功能的线索。我害怕编写自己的版本,除了单调乏味之外,必然会产生更糟糕的结果,因为其中已有200行代码,由比我更聪明的人编写^^
理想情况下,我想添加一些东西,或做一些小改动,以免破坏整个测量,报废,回收,以及其中发生的任何其他复杂的事情。
提前致谢,欢迎任何帮助