首页 > 解决方案 > 更改 View 的位置后,RotateAnimation 的行为很奇怪

问题描述

我正在使用 RotateAnimation 将 imageView 旋转到 -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);

改变imageview位置的代码

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

我在这里发布视频也是为了更好地理解 https://www.youtube.com/watch?v=uVWlrTNDKCM

标签: androidandroid-animation

解决方案


看起来 RotationAnimation 仍在围绕“旧”视图位置旋转,可能是因为它是“最终的”,这就是为什么它在创建时与视图的“旧”位置相关联。您可以为每个位置更改创建一个新的 RotationAnimation,这可能会解决问题,尽管我建议同时使用ViewPropertyAnimator和/或ObjectAnimator,将您的视图转换到另一个位置并旋转它。


推荐阅读