Ho un ImageView che sto ruotando per essere utilizzato come animazione di caricamento. Una volta caricati i miei dati, provo a fermare l'animazione, ma invece di andare in bicicletta fino alla fine e poi fermarsi, l'animazione va a metà strada, quindi si arresta, e quindi l'immagine torna allo stato originale, che sembra piuttosto brutto .Come fermare l'animazione alla fine del ciclo?
Ecco che cosa ho provato:
Opzione 1:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null) {
iv.clearAnimation();
}
Opzione 2:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null && iv.getAnimation() != null) {
iv.getAnimation().cancel();
}
Opzione 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) {
}
});
}
Il risultato finale è lo stesso in tutti e tre i casi. Come faccio a ruotare l'immagine e farla tornare dove è iniziata?
Edit:
Alcuni ulteriori informazioni: La mia rotazione di animazione:
<?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" />
Come vorrei iniziare l'animazione:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotate);
rotation.setRepeatCount(Animation.INFINITE);
iv.startAnimation(rotation);
Alcune delle mie animazioni sono ancora un po 'nervose, ma funziona per la maggior parte di esse, grazie! – Catherine
@Catherine può sembrare nervoso per i set di animazione in cui si verificano più cose contemporaneamente, non l'hanno testato ma per le animazioni semplici questa è la strada da percorrere. –
Grazie per il bel trucco. Sarebbe stato meglio che Android fornisse un'API stopAfterCycleCompletion() o qualcosa del genere. – rpattabi