co mam
Mam strzałki obraz (podobnie jak lewa). Kiedy użytkownik go kliknie, powinien obrócić się o 180 stopni z animacją i powinien wyglądać jak właściwy.
co zrobiłem
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) {
}
});
}
problem
widzę, że animacja działa dobrze, ale nie podczas ustawiania obrazu jest trochę migotanie. Może być z powodu różnicy czasu, kiedy animacja się kończy i obraz jest ustawiony.
Jak mogę usunąć ten problem z migotaniem? Czy masz lepsze podejście do tego?
Obrazek obraca się tylko raz, kiedy go naciskam. Ale powinien się znów obracać po ponownym naciśnięciu i tak dalej. Ale tak się nie dzieje. Dowolny pomysł? –
Cóż, w przypadku, gdy korzystasz z podanego przeze mnie przykładu kodu, ten kod mówi dokładnie, aby wyświetlić "obrót do 180 stopni". Więc jeśli jest już obrócony o 180 stopni, to nic nie da. W odbiorniku kliknięć można np. sprawdź bieżący obrót widoku (.getRotation), a jeśli nie jest 0, to obróć go z powrotem do 0 w podobny sposób. –
Tak, właśnie to zrobiłem i to zadziałało. Czy istnieje sposób kontrolowania kierunku animacji podczas obracania do 0. Mam na myśli, że obraca się w określonym kierunku, ale chcę iść w odwrotny sposób. –