如何在Android上处理重叠的RotateAnimation-s?

时间:2014-03-29 13:55:43

标签: android animation rotation android-sensors

我正在使用RotateAnimation设置指向箭头的动画,以便在用户更新目标点或当前设备位置更改时更新其位置。我正在使用interpolator.accelerate_decelerate使动画看起来更加流畅和“物理”。

一切正常,直到当前动画仍在处理时另一个更新到来,例如,当用户在指向箭头仍在旋转时更改目的地时。当发生这种情况时,箭头突然反弹,看起来很丑,我试图避免这种情况。我试图实现一个队列,使每个下一个动画等到上一个结束,它看起来不错,但行为变得非常不合逻辑。

所以我的问题如下:

1)在动画逐个启动并相互重叠的情况下,是否有某种方法使动画过渡更加流畅

2)有没有办法停止当前正在处理的动画并获得对象的中间位置? - 如果我决定在结束前停止动画并使用当前位置作为起点下一个动画。

2 个答案:

答案 0 :(得分:1)

确定最简单的方法是创建一个类似于RotateAnimation的自定义动画并在applyTransformation中保存当前旋转角度,然后可以将此角度用作下一个动画的起始角度,从而避免“跳跃”

答案 1 :(得分:0)

扩展ImageView的自定义类,它根据磁场中偶极子的角运动执行动画:

https://stackoverflow.com/a/22738030/3459206