Ich habe einige grundlegende Artikel Dekoration, die einige Sachen in ItemDecoration.onDrawOver
Methode zeichnet.Wie RecyclerView Artikel Dekoration Zeichnung für die Dauer der Element Animationen deaktivieren
Diese RecyclerView
hat auch DefaultItemAnimator
gesetzt. Animationen funktionieren, alles ist großartig. Außer einer Sache.
Wenn alle vorhandenen Elemente mit einem neuen Elementsatz in diesem Adapter ausgetauscht werden, werden die Dekorationen angezeigt, während die Animation ausgeführt wird.
Ich brauche eine Möglichkeit, sie zu verstecken. Wenn die Animation beendet ist, müssen sie angezeigt werden, aber während sie läuft, müssen sie ausgeblendet werden.
Ich habe versucht, die folgenden:
public void onDrawOver(..., RecyclerView.State state) {
if(state.willRunPredictiveAnimations() || state.willRunSimpleAnimations()) {
return;
}
// else do drawing stuff here
}
aber das ist nicht zu helfen. Die Dekoration wird nur für die kurze Zeit der Animation entfernt, erscheint dann aber wieder, während sie noch läuft.
Auch Setup enthält eine RecyclerView.Adapter
, dieStableIds() hat (falls dieses Bit zählt).
Mit diesem Ansatz bewirkt, dass die Dekorationen für einen Moment verschwinden und dann wieder nach der Animation, die ich fand nicht so schön wie die Dekorationen animieren. Jedoch, +1 sowieso weil 'getItemAnimator(). IsRunning()' ist nützliche Information. :) –
@LorneLaliberte ja, ich fand diese unglückliche Nebenwirkung auch. Wenn Sie einen Weg finden, teilen Sie bitte ... – dimsuz
Siehe meine Antwort für einen Ansatz, der dies löst, indem Sie die Dekorationen zusammen mit den Standardanimationen animieren. –