Ich habe eine ImageView, die ich als Ladeanimation rotiere. Sobald meine Daten geladen sind, versuche ich die Animation zu stoppen, aber anstatt zum Ende zu fahren und dann anzuhalten, geht die Animation auf einen halben Punkt, stoppt dann und das Bild springt zurück in seinen ursprünglichen Zustand, der ziemlich hässlich aussieht .Wie kann die Animation am Ende des Zyklus gestoppt werden?
Hier ist, was ich versucht habe:
Option 1:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null) {
iv.clearAnimation();
}
Option 2:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null && iv.getAnimation() != null) {
iv.getAnimation().cancel();
}
Option 3:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null && iv.getAnimation() != null) {
iv.getAnimation().setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
animation.cancel();
}
@Override
public void onAnimationEnd(Animation animation) {
}
});
}
Das Ergebnis Ende ist das gleiche in allen drei Fällen. Wie drehe ich das Bild und lasse es dort enden, wo es angefangen hat?
Edit:
Einige weitere Informationen: Meine Rotation Animation:
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromDegrees="0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" />
Wie ich die Animation zu starten:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotate);
rotation.setRepeatCount(Animation.INFINITE);
iv.startAnimation(rotation);
Einige meiner Animationen sind immer noch ein wenig nervös, aber es funktioniert für die meisten von ihnen, danke! – Catherine
@Catherine es kann für Animationssätze, wo mehrere Dinge zur gleichen Zeit auftreten, nervös aussehen, haben es nicht getestet, aber für einfache Animationen ist dies der Weg zu gehen. –
Danke für den netten Trick. Es wäre besser gewesen, Android eine API stopAfterCycleCompletion() oder etwas ähnliches zur Verfügung gestellt. – rpattabi