7

Ich habe eine RecyclerView mit einer Sammlung von CardView gestopft. Mein Code ist im Wesentlichen der Code auf this official Artikel, und funktioniert gut, so dass es keinen Grund gibt, meinen Code hier zu posten. Ist da.Animierte Population von RecyclerView

Es ist sieht wie folgt aus:

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

Alle CardViews sind zugleich gezeigt, wie erwartet.

Aber was ich will ist, dass die Ansichten einzeln von außerhalb der Ansicht bis zu seiner normalen Position angezeigt werden.

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

Weiß jemand, wie man das macht?

+0

Haben Sie etwas gefunden? Ich habe das gleiche Problem. – murena

Antwort

1

Sie können versuchen, benutzerdefinierte ItemAnimators wie im folgenden Projekt zu erstellen.

https://github.com/gabrielemariotti/RecyclerViewItemAnimators

+0

Leider, während die Bevölkerung gut funktioniert, wenn scrolling getan wird, die cardview verlegt oder verschwinden bald, diese Bibliothek hat immer noch einige Probleme. –

4

erstellen Animator benutzerdefinierte Element (oder Standard eines erweitern) und animateAdd so überschreiben, dass die Karte von unter dem Bildschirm animiert werden. Einzelheiten finden Sie unter documentation. Wenn Sie es nicht ordnungsgemäß implementieren, können ViewHolder verloren gehen, weshalb Sie vorsichtig sein sollten.

Der beste Weg, um die Animation zu laufen ist ein Animator zu schaffen, die translationY von recyclerView.getHeight() auf 0 animieren Sie DefaultItemAnimator nach Referenzen überprüfen.

Übrigens wird RecyclerView im ersten Layout-Durchlauf Views nicht animieren, weil es komisch aussieht, alles einzublenden. Um dies zu umgehen, halten Sie zunächst Ihren Adapter leer und fügen nach dem ersten Layout die Elemente hinzu (Sie können einen Handler verwenden und das Hinzufügen von Elementen zu Ihrem Adapter verzögern).

Übrigens unterstützt RecyclerView 'noch' keine animierenden Ansichten beim Scrollen, so dass animateAdd nicht aufgerufen wird, wenn neue Elemente hinzugefügt werden, während die Liste vom Benutzer gescrollt wird.