Mam ImageView, który obracam do wykorzystania jako animacja ładowania. Po wczytaniu danych próbuję zatrzymać animację, ale zamiast jechać do końca, a następnie zatrzymywać się, animacja przechodzi do połowy, a następnie zatrzymuje się, a następnie obraz wraca do pierwotnego stanu, który wygląda dość paskudnie .Jak zatrzymać animację po zakończeniu cyklu?
Oto co próbowałem:
Wariant 1:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null) {
iv.clearAnimation();
}
Opcja 2:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null && iv.getAnimation() != null) {
iv.getAnimation().cancel();
}
Wariant 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) {
}
});
}
Końcowym rezultatem jest to samo we wszystkich trzech przypadkach. Jak obrócić obraz i zakończyć go z powrotem tam, gdzie się zaczął?
Edit:
Niektóre dalsze informacje: Moja animacja rotacji:
<?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" />
Jak uruchomić animację:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotate);
rotation.setRepeatCount(Animation.INFINITE);
iv.startAnimation(rotation);
Niektóre z moich animacji wciąż są trochę niezręczne, ale działa dla większości z nich, dzięki! – Catherine
@Catherine może wyglądać skandalicznie w przypadku zestawów animacji, w których jednocześnie występuje wiele rzeczy, nie przetestowano go, ale w przypadku prostych animacji jest to sposób na wykonanie. –
Dzięki za miłą sztuczkę. Byłoby lepiej, gdyby Android dostarczył api stopAfterCycleCompletion() lub coś w tym stylu. – rpattabi