Изображение Android не вращается после 1-го запуска с помощью ViewPropertyAnimator - PullRequest
0 голосов
/ 09 февраля 2019
  • У меня есть два ImageView (ов) , установленных в моем макете один над другим, скажем, A и B.
  • Я установил альфа B на 0таким образом, оно полностью исчезло, так как я хочу контролировать, какое изображение будет отображаться, установив в своем коде соответствующую альфа на 1.
  • Теперь я также хочу повернуть изображения на 360 градусов, прежде чем они исчезнут и перед новым изображением.появляется на экране, когда я нажимаю ImageView (s) .
  • Для этого я использую 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);
    }
    

    }

1 Ответ

0 голосов
/ 11 февраля 2019

Используйте метод

.rotationBy(float value)

вместо метода

.rotation(float value)

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

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

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