RotateAnimation ведет себя странно после изменения положения представления

#android #android-animation

#Android #android-анимация

Вопрос:

Я использую RotateAnimation для поворота изображения на -30 градусов. И это хорошо работает. Теперь я меняю положение представления, устанавливая разные значения для X и Y. Все хорошо до сих пор.

Теперь, когда я снова выполняю то же самое RotateAnimation для этого вида после изменения положения, это работает странно (см. Ссылку на Видео ниже), и я не могу найти причину. Я много пробовал, но безуспешно. Похоже, это связано с pivotX и pivotY после изменения позиции, но я не могу найти фактическую причину.

Код для RotateAnimation

 final RotateAnimation rotateAnim = new RotateAnimation(0f, -30f,
            RotateAnimation.RELATIVE_TO_SELF, 0.5f,
            RotateAnimation.RELATIVE_TO_SELF, 1f);
rotateAnim.setDuration(2000);
rotateAnim.setFillAfter(false);
ivFace.startAnimation(rotateAnim);
 

Код изменения положения изображения

 ivFace.setX(300);
ivFace.setY(200);
 

Здесь я также размещаю видео для лучшего понимания
https://www.youtube.com/watch?v=uVWlrTNDKCM

Ответ №1:

Похоже, что rotationAnimation все еще вращается вокруг «старой» позиции представления, вероятно, потому, что она «окончательная», и именно поэтому она привязана к «старой» позиции представления в момент ее создания. Вы могли бы создать новую rotationAnimation для каждого изменения положения, что могло бы решить проблему, хотя я бы предложил использовать ViewPropertyAnimator и / или ObjectAnimator для обоих, переводя ваше представление в другую позицию и поворачивая его.