Configuración de android: animateLayoutChanges mediante programación

84

Estoy creando linearLayouts programáticamente y me gustaría que aparezcan y desaparezcan cuando la visibilidad esté configurada como visible / desaparecida.

Puedo configurar

android:animateLayoutChanges="true" 

en el archivo xml, pero como estoy creando las vistas programáticamente, necesito configurarlo programáticamente. ¿Cómo puedo hacer eso?

deimos1988
fuente

Respuestas:

151

Utilice este código:

container.setLayoutTransition(new LayoutTransition());

o

LayoutTransition lt = new LayoutTransition();
lt.disableTransitionType(LayoutTransition.DISAPPEARING);
container.setLayoutTransition(lt);
usuario3709904
fuente
1
Gracias por su comentario, pero desafortunadamente disableTransitionType solo está disponible desde el nivel de API 16, sin embargo, estoy usando el nivel de API 15.
deimos1988
2
Es opcional, puede usarlo simplementecontainer.setLayoutTransition(new LayoutTransition())
user3709904
2
De acuerdo, pero si quisiera deshabilitar el efecto de desvanecimiento, ¿hay alguna forma para el nivel de API 15?
deimos1988
3
¿Por qué desactivar la transición de desaparición?
Louis CAD
2
Para hacerlo en un nivel de API inferior a 16, simplemente desactive Animadores para estos tipos de transición. Esto se menciona en la documentación: developer.android.com/intl/ru/reference/android/animation/… LayoutTransition lt = cardsGroup.getLayoutTransition (); // deshabilitar las transiciones de diseño que aparecen / desaparecen lt.setAnimator (LayoutTransition.APPEARING, null); lt.setAnimator (LayoutTransition.DISAPPEARING, nulo); lt.setAnimator (LayoutTransition.CHANGE_DISAPPEARING, nulo);
cielo
18

Para deshabilitar el efecto de desvanecimiento intente esto:

LinearLayout layout = (LinearLayout) findViewById(R.id.test_layout);
layout.setLayoutTransition(null);
Beto
fuente
2
Esto me está dando NullPointerException.
Srujan Barai
7
@SrujanBarai Entonces no hay vista con la identificación R.id. test_layouten su diseño.
Paul Woitaschek