#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 для обоих, переводя ваше представление в другую позицию и поворачивая его.