如何animation回收商视图的布局pipe理器的变化

我正在使用2个不同的布局布局pipe理器(即LinearLayoutManager和GridLayoutManager)的回收器视图。

我想从一个布局pipe理器切换到另一个pipe理器时animation的项目。 有没有办法达到这个效果?

在我脑海中popup的方法是覆盖setLayoutManger方法,并使用fromLayoutManager捕获项目的BEFORE状态,并使用toLayoutManager计算项目的AFTER状态,并将这些项目放置到位。

我还没有深入研究这些守则,所以任何人都可以告诉我,这样的方法是可行的,还是有更好的做法呢?

Solutions Collecting From Web of "如何animation回收商视图的布局pipe理器的变化"

我通过将下面的两个方法添加到我的适配器来解决此问题。 我调用notifyRemoveEach() ,更改布局pipe理器,然后调用notifyAddEach() 。 这些项目会根据ItemAnimator上指定的时间长短进行简短的animation处理。

  public void notifyRemoveEach() { for (int i = 0; i < items.size(); i++) { notifyItemRemoved(i); } } public void notifyAddEach() { for (int i = 0; i < items.size(); i++) { notifyItemInserted(i); } }