Ruotare un animazione Imagewith
quello che ho
Ho un'immagine freccia (come quella di sinistra). Quando l'utente fa clic su di esso, dovrebbe ruotare di 180 gradi con un'animazione e dovrebbe apparire come quella giusta.
quello che ho fatto
private void rotate(float degree, final int toggleV) {
final RotateAnimation rotateAnim = new RotateAnimation(0.0f, degree,
RotateAnimation.RELATIVE_TO_SELF, 0.5f,
RotateAnimation.RELATIVE_TO_SELF, 0.5f);
rotateAnim.setDuration(500);
toggle.startAnimation(rotateAnim);
rotateAnim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
if (toggleV == 1)
toggle.setImageResource(R.drawable.toggle_up);
else
toggle.setImageResource(R.drawable.toggle_down);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
}
Il problema
vedo che l'animazione funziona bene, ma c'è un po 'di sfarfallio durante l'impostazione dell'immagine. Può essere a causa della differenza di orario quando termina l'animazione e viene impostata l'immagine.
Come posso rimuovere questo problema di sfarfallio? Hai un approccio migliore per fare questo?
ImageView ruota appena una volta quando lo preme. Ma dovrebbe ruotare di nuovo dopo averlo premuto di nuovo e così via. Ma questo non succede. Qualche idea? –
Bene, nel caso si stia utilizzando l'esempio di codice che ho fornito, questo codice dice esplicitamente di visualizzare "ruota a 180 gradi". Quindi se è già ruotato di 180 gradi, allora non farà nulla. Nel listener dei clic è possibile ad es. controlla la rotazione corrente della vista (.getRotation) e, se non è 0, ruotala nuovamente su 0 in modo simile. –
Sì, l'ho appena fatto e ha funzionato anche io. Ora, c'è un modo per controllare la direzione dell'animazione quando si ruota a 0. Voglio dire, sta ruotando in una particolare direzione, ma voglio andare nella direzione opposta. –