使用RotateAnimation的最短路径动画

时间:2012-06-19 09:26:13

标签: android android-animation

我想在两个角度之间进行最短路径旋转动画。我正在使用RotateAnimation(fromDegrees,toDegrees,pivotX,pivotY)方法为Image设置动画。

问题在于,当度数为350且度数为10时,它会旋转整圆(340度),而不是顺时针旋转20度。

有没有办法强制进行最小程度的旋转?

1 个答案:

答案 0 :(得分:4)

您可以使用ViewPropertyAnimator而不是RotateAnimation,它可以将视图 BY 旋转到指定值,因此您不需要&# 39;从'和'到'值。

这两个动画之间的主要区别主要在于,RotateAnimation仅移动屏幕上的像素,因此例如OnClickListener不会使用像素设置动画,而ViewPropertyAnimator会更改屏幕上视图的实际属性/位置。

ViewPropertyAnimator也非常有用,因为它非常容易实现。 顺时针旋转20度的ViewPropertyAnimator的最小实现将如下所示:

yourImage.animate().rotationBy(20); 

设置一个持续时间并没有错,它也建议设置一个插值器,因为它使任何动画看起来更逼真:

yourImage.animate()
    .rotationBy(20) -> degrees -20 would be counter clockwise
    .setDuration(1000) -> ms
    .setInterpolator(new AccelerateDecelerateInterpolator());

请务必查看所有可用方法的rotationBy