2015-09-14 3 views
2

Я вращая ImageView под названием photo с этим кодом:Android отменить вид анимации

RotateAnimation rotate = new RotateAnimation(fromDegrees, toDegrees, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
    rotate.setDuration(400); 
    rotate.setFillEnabled(true); 
    rotate.setFillAfter(true); 
    rotate.setInterpolator(new LinearInterpolator()); 
    rotate.setAnimationListener(new Animation.AnimationListener() { 
    }); 
    photo.startAnimation(rotate); 

Он вращается красиво и сохраняется. Позже я, возможно, захочу изменить изображение в этом ImageView. Тем не менее, мое новое изображение оказывается повернутым из-за сохраняющейся анимации предыдущей. Как я могу «отменить» эту анимацию перед переключением изображений?

+0

Возможно, это поможет вам: http://stackoverflow.com/questions/4120824/android-reversing-an-animation –

+1

Попробуйте сделать обратную анимацию и возможно, установите длительность в 0, если вы не хотите, чтобы она была анимирована ... – Darwind

+0

stopAnimation() не работает? – NecipAllef

ответ

2

Видимо, лучший способ сделать это - с другой анимацией с нулевой продолжительностью. Если у меня есть оригинальная анимация в этой функции:

private void rotatePhoto(int fromDegrees, int toDegrees, int duration) { 
    RotateAnimation rotate = new RotateAnimation(fromDegrees, toDegrees, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
    rotate.setDuration(duration); 
    rotate.setFillEnabled(true); 
    rotate.setFillAfter(true); 
    rotate.setInterpolator(new LinearInterpolator()); 
    rotate.setAnimationListener(new Animation.AnimationListener() { 
    }); 
    photo.startAnimation(rotate); 
} 

Я могу повернуть мою фотографию на 90 градусов с чем-то вроде этого: rotatePhoto(0,90,400). Впоследствии, чтобы «отменить» анимацию, я могу просто использовать rotatePhoto(0,0,0)