Ich möchte vorausschauende Animationen in meinem benutzerdefinierten LayoutManager unterstützen, wenn das Element von außerhalb der sichtbaren Bildschirmgrenzen zum sichtbaren Punkt verschoben wird.
Alle Füllvorgänge mache ich in onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state)
.
Laut einer Dokumentation zur Unterstützung prädiktiver Animationen in der Pre-Layout-Phase ( state.isPreLayout()
) sollte ich die Anfangsbedingungen für die Change-Animation festlegen (z. B. irgendwo erscheinende Views)
Das Problem ist, dass ich keinen Weg finden kann, um im Vorlayout zu bestimmen, welche Ansichten von außerhalb verschoben werden, weil ich nur mit aktuell an RecyclerView-Ansichten angehängten Ansichten arbeiten kann und onItemsMoved(RecyclerView recyclerView, int from, int to, int itemCount)
method ist genannt nach Pre-Layout-Phase. (Zum Beispiel heißt onItemsRemoved vor Vorlayout)
Ist es der Fehler mit LayoutManager
oder könnte ich irgendwie
Bestimmen Sie im Vorlayout, welche Ansichten bald verschoben werden sollen.
PS: Ich kann die Vorhersageanimation vom sichtbaren Punkt nach draußen beibehalten, weil ich in der Lage bin, sichtbare Ansichten zu durchlaufen und mit recycler.convertPreLayoutPositionToPostLayout
zu bestimmen, welche verschoben werden sollen.
Dieser Artikel hat mir sehr geholfen, beschreibt aber auch keine Animation Ich brauche.
PPS: LinearLayoutManager unterstützt solche Animationen auch nicht. (Es gibt nur einfache Fade-in-Animation)
Sie wissen nicht, welche Elemente sichtbar sein werden, aber Sie wissen, welche Elemente weggehen (oder geändert werden). Daher können Sie abschätzen, wie viel Platz in welcher Richtung benötigt wird. Sie können den Code des LinearLayoutManagers überprüfen, um zu sehen, wie es funktioniert. Sie können diese Artikel auch über die Details des RecyclerView-Systems lesen.
Tags und Links java android android-layout android-recyclerview android-animation