5

Ho un LinearLayout con la proprietà layoutAnimation utilizzata per personalizzare . In questo modo:L'animazione funziona una sola volta

<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" > 

Quando faccio clic sull'elenco, verrà visualizzata l'animazione. Ma funziona solo una volta e non animerà la lista nel prossimo clic. Perché?

Per favore fatemi sapere, se avete bisogno di ulteriori descrizioni.

Grazie

+1

cliccando u significa espandere e comprimere una voce ..? – Ronnie

+0

Sì, espandi e comprimi un elemento – Kermia

+0

Puoi incollare list_layout_contorller? Estendi ExpandableListView o ne hai creato uno nuovo? Devi vedere qualche codice .. – Ronnie

risposta

7

animazioni layout vengono eseguiti quando viste vengono aggiunti al layout. Quindi dovrai aggiungere/rimuovere manualmente le viste su ogni espansione/compressione per far funzionare l'animazione del layout.

Per questo, è possibile mantenere una mappa di viste con l'indice di elenco come chiave. Ogni volta che fai clic, scegli gli elementi corrispondenti dalla mappa e aggiungi al tuo layout. L'animazione verrà eseguita su quella vista e il problema sarà risolto.

È inoltre possibile provare modificando la visibilità delle viste in onClick(). Ma non sono sicuro di questo. Prova e fammi sapere.

Spero che questo aiuti.

+0

Grazie mille. Questa riga mi ha aiutato: 'Le animazioni di layout vengono eseguite quando le viste vengono aggiunte al layout' – Kermia

+1

@Kermia: Puoi dirmi come hai risolto il problema? –

+0

Grazie per il suggerimento di cambiare visiblilty: sto usando un 'LayoutAnimationController' che ha anche sparato una sola volta. Ora ho impostato la visibilità del layout su 'GONE', nella prossima istruzione l'ho impostato su' VISIBLE' e nella seguente istruzione scrivo 'myLayout.setLayoutAnimation (myLayoutAnimController);' Funziona perfettamente :-) – 0X0nosugar

1

tenta di riavviare l'animazione su ogni elemento clic:

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

No, non funziona – Kermia

9

Prima u vuole dichiarare

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

e ogni clearAnimation prima. In ClickEvent di LinearLayout

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

chiamata

listView.scheduleLayoutAnimation();

prima di tutti i cambiamenti nella lista

Problemi correlati