Ich möchte Vorhersageanimationen in my custom LayoutManager unterstützen, wenn Element von außerhalb der sichtbaren Bildschirmgrenzen zum sichtbaren Punkt verschoben wird.Anzuzeigende Ansicht in LayoutManager-Vorlayout bestimmen
Alle Füllvorgänge ich in der onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state)
tun.
Nach einer Dokumentation prädiktiven Animationen in Pre-Layout-Phase zu unterstützen (state.isPreLayout()
) i für die Änderung Animation die Anfangsbedingungen einrichten sollte (zB Ort erscheinen Ansichten irgendwo)
Das Problem ist, dass ich nicht finde einen Weg, um im Vorlayout zu bestimmen, welche Ansichten von außen bewegt werden, weil ich nur mit aktuell an RecyclerView angebrachten Ansichten arbeiten kann und die onItemsMoved(RecyclerView recyclerView, int from, int to, int itemCount)
Methode nach Vorlayoutstufe heißt. (Zum Beispiel ist onItemsRemoved vor Pre-Layout genannt)
Ist es der Fehler mit LayoutManager
oder könnte ich irgendwie bestimmt in Pre-Layout-Ansichten, die bald gehen zu bewegt?
PS: Ich bin in der Lage Vorhersageanimation vom sichtbaren Punkt nach draußen zu halten, weil ich in der Lage bin, sichtbare Ansichten zu durchlaufen und mit recycler.convertPreLayoutPositionToPostLayout
zu bestimmen, welche verschoben werden sollen.
//childViews is an iterable over RecyclerView items
for (View view : childViews) {
RecyclerView.LayoutParams lp = (RecyclerView.LayoutParams) view.getLayoutParams();
boolean probablyMovedFromScreen = false;
if (!lp.isItemRemoved()) {
//view won't be removed, but maybe it is moved offscreen
int pos = lp.getViewLayoutPosition();
//start view is a first visible view on screen
int lowestPosition = getPosition(startView);
int highestPosition = getPosition(endView);
pos = recycler.convertPreLayoutPositionToPostLayout(pos);
probablyMovedFromScreen = pos < lowestPosition || pos > highestPosition;
}
if (probablyMovedFromScreen) {
//okay this view is going to be moved
}
}
This article haben mir sehr geholfen, aber es beschreibt auch keine Animation, die ich brauche.
PPS: LinearLayoutManager unterstützt solche Animationen auch nicht. (Es gibt nur eine einfache Einblendanimation)
sucht immer noch nach Lösung ... – Beloo
Gute Frage. Ich stecke auch hier fest. Bitte teilen Sie, wenn Sie eine Lösung finden. –