7

Ho un RecyclerView imbottito con una raccolta di CardView. Il mio codice è essenzialmente il codice sull'articolo this official e funziona perfettamente, quindi non è necessario inserire il mio codice qui. È lì.Popolazione animata di RecyclerView

E 'appare come il seguente:

+------------------------------+ 
| +------------+ +------------+ | 
| | card 1 | |   | | 
| +------------+ +------------+ | 
| +------------+ +------------+ | 
| |   | |   | | 
| +------------+ +------------+ | 
| +------------+ +------------+ | 
| |   | |   | | 
| +------------+ +------------+ | 
| +------------+ +------------+ | 
| |   | | card N | | 
| +------------+ +------------+ | 
+-------------------------------+ 

Tutti CardViews sono mostrati allo stesso tempo, come previsto.

Ma quello che voglio è che le viste vengono visualizzate una ad una dall'esterno della vista fino alla sua posizione normale.

+-------------------------------+   +-------------------------------+ 
| +------------+    |   | +------------+ +------------+ | 
| | card 1 |    |   | | card 1 | | card 2 | | 
| +------------+    |   | +------------+ +------------+ | 
|     ^  |   |        | 
|      |  |   |        | 
|      |  |   |        | 
|      |  |   |        | 
|      |  |   |  ^      | 
|      |  |   |  |      | 
|      |  |   |  |      | 
|      |  |   |  |      | 
|      |  |   |  |      | 
+----------------------|--------+   +-------|-----------------------+ 
        ------------+    +------------+ 
       | card 2 |    | card 3 | 
       +------------+    +------------+  

Qualcuno sa come fare?

+0

Hai trovato qualcosa? Ho lo stesso problema. – murena

risposta

1

È possibile provare a creare ItemAnimators personalizzati come nel progetto in basso.

https://github.com/gabrielemariotti/RecyclerViewItemAnimators

+0

Sfortunatamente, mentre la popolazione funziona bene, al termine dello scorrimento, il cardview si trova in posizione errata o scompare presto, questa libreria ha ancora alcuni problemi. –

4

Creare un animatore elemento personalizzato (o estendere default) e sovrascrivere animateAdd tale che la scheda animerà da sotto lo schermo. Vedi lo documentation per i dettagli. La mancata implementazione corretta potrebbe causare la perdita di ViewHolders, quindi è necessario fare attenzione.

Il modo migliore per eseguire l'animazione è creare un animatore che animi translationY da recyclerView.getHeight() a 0. È possibile controllare DefaultItemAnimator per i riferimenti.

Btw, nel primo passaggio di layout, RecyclerView non animerà Views perché sembra strano sbiadire in tutto. Per superarlo, mantieni inizialmente l'adattatore vuoto e dopo il primo passaggio di layout, aggiungi i tuoi articoli (puoi utilizzare un gestore e posticipare l'aggiunta di elementi all'adattatore).

Btw, RecyclerView non "ancora" supporta l'animazione delle viste durante lo scorrimento in modo che animateAdd non venga chiamato quando vengono aggiunti nuovi elementi mentre l'elenco viene spostato dall'utente.