3

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

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

有没有办法强制最小旋转?

4

1 回答 1

3

您可以使用ViewPropertyAnimator代替 RotateAnimation ,它有一个方法rotationBy,它按指定的值旋转视图因此您不需要 'from' 和 'to' 值。

这两个动画之间的主要区别主要在于,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());

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

于 2016-06-14T06:38:54.830 回答