2015-03-18 3 views
16

Я использую просмотр ресайклера с двумя разными менеджерами макета макета, который является LinearLayoutManager и GridLayoutManager.Как анимировать изменение менеджера компоновки вида recycler

Я хотел бы анимировать элементы при переключении с одного менеджера макета на другого менеджера. Есть ли способ достичь этого эффекта?

Подходящий всплывает в моей голове, чтобы переопределить метод setLayoutManger и захватить состояния BEFORE элементов с помощью метода fromLayoutManager и вычислить состояния AFTER элементов с помощью toLayoutManager и оживить эти элементы на месте.

Я не очень глубоко разбираюсь в кодах, так что кто-нибудь может сказать мне, что такой подход можно достичь или лучше ли этого достичь?

+0

У вас есть обновление об этом? – feisal

ответ

8

Я решил это, добавив два метода ниже к моему адаптеру. Я звоню 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); 
     } 
    } 
Смежные вопросы