我想在两个角度之间进行最短路径旋转动画。我正在使用RotateAnimation(fromDegrees,toDegrees,pivotX,pivotY)方法为Image设置动画。
问题在于,当度数为350且度数为10时,它会旋转整圆(340度),而不是顺时针旋转20度。
有没有办法强制进行最小程度的旋转?
答案 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。