5

Tengo una LinearLayout con la propiedad layoutAnimation que se utiliza para personalizar ExpandableListView. como este:layoutAnimation funciona solo una vez

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layoutAnimation="@drawable/list_layout_controller" 
    android:orientation="vertical" > 

Cuando hago clic en la lista, se mostrará la animación. Pero funciona solo una vez y no animará la lista en el siguiente clic. ¿Por qué?

Háganme saber, Si necesita más descripción.

Gracias

+1

por clic u mean expandir y contraer un elemento ..? – Ronnie

+0

Sí, expanda y contraiga un elemento – Kermia

+0

¿Puede pegar list_layout_contorller? ¿Extiende la ExpandableListView o crea una nueva? Necesita ver algún código ... – Ronnie

Respuesta

7

Animaciones Disposición se ejecutan cuando se añaden vistas a la disposición. Por lo tanto, deberá agregar/eliminar manualmente las vistas en cada expansión/colapso para que funcione la animación de diseño.

Para esto, puede mantener un Mapa de vistas con el índice de la lista como la clave. Cada vez que recibe un clic, simplemente seleccione los elementos correspondientes del mapa y agréguelos a su diseño. La animación se ejecutará en esa vista y su problema será reparado.

También puede intentar cambiando la visibilidad de las vistas en onClick(). Pero no estoy seguro de esto Pruébalo y avísame.

Espero que ayude.

+0

Muchas gracias. Esta línea me ayudó: 'Las animaciones de diseño se ejecutan cuando las vistas se agregan al diseño' – Kermia

+1

@Kermia: ¿Pueden por favor decirme cómo resolvió su problema? –

+0

Gracias por la sugerencia de cambiar la visibilidad: estoy usando un 'LayoutAnimationController' que también se disparó una sola vez. Ahora simplemente configuro la visibilidad de Layout como 'GONE', en la siguiente declaración lo configuré como' VISIBLE' y en la siguiente declaración escribo 'myLayout.setLayoutAnimation (myLayoutAnimController);' Funciona perfectamente :-) – 0X0nosugar

1

intenta reiniciar la animación de cada partida del clic:

lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
     view.getAnimation().start(); 
     //your custom logic 
} 
}); 
+0

No, no funciona – Kermia

9

Primera u desea declarar

Animation listanimation = AnimationUtils.loadAnimation(mainActivity.this, R.anim.list_layout_controller); 

y cada vez clearAnimation primero. En Clickde de LinearLayout

linearLayout.clearAnimation(); 
linearLayout.startAnimation(listanimation); 
2

llamada

listView.scheduleLayoutAnimation();

antes de que todos los cambios en la lista

Cuestiones relacionadas