Изображение Android не вращается после 1-го запуска с помощью ViewPropertyAnimator

1
  • У меня есть два ImageView (ов), установленных в моем макете, один поверх другого, скажем, A и B.
  • Я установил альфа B на 0, чтобы он полностью исчез, так как я хочу контролировать, какое изображение отображается, установив соответствующую альфа на 1 в моем коде.
  • Теперь я также хочу повернуть изображения на 360 градусов, прежде чем они исчезнут, и до того, как новое изображение появится на экране, когда я нажму на ImageView (s).
  • Я использую методы Rotation rotation() и alpha() ViewPropertyAnimator, чтобы сделать это.
  • Это работает без каких-либо проблем, когда приложение установлено и запускается в первый раз.
  • Однако в следующий раз, когда я нажимаю на Изображения, работают только анимации постепенного появления и исчезновения.
  • Вращение не работает.
  • Проверьте этот код:

    boolean isImage1Showing = true;
    
    //onClick() method for the 2 ImageView(s)
    public void fadeAndRotate(View view){         
    
    if (isImage1Showing){
    
        //Rotate the resource on 1st ImageView by 360 degrees
        imageViewA.animate().rotation(360f).setDuration(2000);
    
        imageViewA.animate().alpha(0).setDuration(2000);
    
        //Displaying the other image on to the screen
        imageViewB.animate().alpha(1).setDuration(2000);
    
        isImage1Showing = false;
    
        } else {
        isImage1Showing = true;
    
        imageViewB.animate().rotation(360f).setDuration(2000);
    
        //Displaying the previous image 
        imageViewA.animate().alpha(1).setDuration(2000);
    
        //fading out the currently displayed image
        imageViewB.animate().alpha(0).setDuration(2000);
    }
    

    }

Теги:
android-activity
android-imageview
android-animation

1 ответ

0

Использовать

.rotationBy(float value)

метод вместо

.rotation(float value)

метод. В вашем случае это вращается 360f, но вы хотите, чтобы повернуть BY 360f.

Так что этот код должен работать:

imageViewA.animate().rotationBy(360f).setDuration(2000);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню