Ich versuche, den ViewPropertyAnimator zu verwenden, um jedes Mal, wenn eine Schaltfläche gedrückt wird, eine Ansicht (eine unbestimmte ProgressBar) zu skalieren.
%Vor%Ich habe einen animatorListener, der normal auf onimationEnd skaliert:
%Vor%Nichts zu kompliziert. Es scheint jedoch nicht immer gleichzeitig x und y zu skalieren.
Normalerweise macht es das erste Mal richtig, manchmal das zweite Mal. Wenn es nicht funktioniert, animiert es nur die letzte Operation in der Kette. Wenn es scaleX ist, skaliert es nur X. Wenn ich es vertausche, skaliert es nur Y.
Dokumentation für scaleX und scaleY sagen:
Animationen, die bereits in der Eigenschaft ausgeführt werden, werden abgebrochen
Ich dachte jedoch, dass ViewPropertyAnimator verkettet werden konnte, und dieser Kommentar gilt nur für neue Animationen (in einer anderen Codezeile). Mache ich etwas falsch oder habe ich einen Fehler gefunden?
Ich betreibe Android 4.2.2 auf einem GalaxyS4. Stock ROM, aber verwurzelt. Wenn das einen Unterschied macht.
Ich glaube, das ist tatsächlich ein Fehler. Ich habe das umgangen, indem ich ObjectAnimator
anstelle von ViewPropertyAnimator
verwendet habe, um das gleiche Ergebnis zu erhalten. Also würde deins ungefähr wie folgt aussehen:
Quelle: Ссылка
Beim Lesen des Quellcodes ist das Verhalten, das Sie beschreiben, durchaus sinnvoll und von Entwurf. Wenn Sie eine Animation hinzufügen, wird sie beim nächsten Runloop gestartet. Manchmal sind Sie in der Lage, beide Animationen zu erhalten, bevor dies geschieht, manchmal nicht.
Wenn Sie ihm mitteilen, die Animation nicht sofort zu starten, haben Sie genügend Zeit, alle Ihre Animationen hinzuzufügen. Dies ist offensichtlich ein bisschen wie ein Hack.
Sie könnten wahrscheinlich so etwas ausprobieren:
%Vor%