如何为回收器视图的布局管理器的更改设置动画

时间:2015-03-18 09:08:51

标签: android animation layout android-recyclerview

我正在使用带有2个不同布局布局管理器的循环器视图,它是LinearLayoutManager和GridLayoutManager。

我想在从一个布局管理器切换到另一个管理器时为项目设置动画。有没有办法达到这个效果?

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

我没有深入研究这些代码,所以任何人都可以告诉我这种方法是可以实现的还是更好地实现这一目标?

1 个答案:

答案 0 :(得分:10)

我通过将以下两种方法添加到我的适配器来解决这个问题。我调用notifyRemoveEach(),更改布局管理器,然后调用notifyAddEach()。这些项目会根据ItemAnimator上指定的持续时间进行简单的动画处理。

    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);
        }
    }