Position der Ansicht nach Ende der Animation ändern

8

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:

%Vor%

Bitte geben Sie mir einen Ratschlag, wie ich die Position der Ansicht entsprechend der Endposition der Animation zurücksetzen soll.

    
teoREtik 13.12.2011, 13:12
quelle

3 Antworten

12

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.

    
teoREtik 13.12.2011, 13:45
quelle
19

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;

    
Hayk Nahapetyan 05.12.2012 16:03
quelle
0

Kehren Sie Ihre Animation um; Beginnen Sie, indem Sie Ihrer Ansicht eine neue Position geben und dann von der alten Position zur neuen Position animieren.

    
Jave 13.12.2011 13:17
quelle

Tags und Links