Ich entwickle ein Widget basierend auf ViewGroup
und mein Problem ist, dass ich die Position der Elemente nach dem Ende der Animation speichern muss. Ich habe setFillAfter(true)
in meinem Animationsobjekt aufgerufen, das ich AnimationListener
erstellt habe, und in% onAnimationEnd
auf die Methode View.layout(l,t,r,b)
, um die Position nach der Animation festzulegen, da die Animation beim nächsten Mal von der Position des neuen Elements ausgehen soll. Aber in diesem Fall sieht es so aus, als ob Gegenstände doppelt gelegt werden. Wenn ich View.layout(l,t,r,b)
am Ende der Animation nicht verwende, beginnt die nächste Animation an der vorherigen Position. Hier ist mein Code:
Bitte geben Sie mir einen Ratschlag, wie ich die Position der Ansicht entsprechend der Endposition der Animation zurücksetzen soll.
Ich habe es getan. Hier ist der Code:
%Vor% Sie haben nur setFillAfter(true)
entfernt und stattdessen setFillEnabled(true)
geschrieben. Aber in diesem Fall verstehe ich die Logik von setFillEnabled()
working nicht, weil sie Verhalten bietet, das nicht wie in der Dokumentation beschrieben ist.
Sie müssen ObjectAnimator
verwenden, es funktioniert ab API 11-Ebene. Es ändert die Ansichtsposition automatisch,
Hier ist das Beispiel
%Vor%Danke JUL für seine Antwort
Wenn Ihre App object animator
nicht gefunden hat, ändern Sie die API-Ebene von Project -> properties -> Android
, als import android.animation.ObjectAnimator;
Tags und Links android android-animation