I've created an animation for an ImageView based on a RotatedTranstion using the following code :
ImageView icon = ImageCache.getImage("refresh.png");
RotateTransition rotateTransition = new RotateTransition(Duration.millis(2000), icon);
rotateTransition.setByAngle(360.0);
rotateTransition.setCycleCount(Timeline.INDEFINITE);
rotateTransition.play();
This results in the following animation :
Rotation in Action
As you may have noticed in the animated gif, the animation is not continuous i.e there is a small delay (pause) between animation cycles.
I've tried to look at the API but can't figure out what causes this delay and how i can get rid of it.
The apparent pause between each cycle is caused by the interpolator, which by default uses Interpolator.EASE_BOTH
(so it decelerates at the end of each cycle and accelerates at the beginning).
To remove this, just set the interpolator to Interpolator.LINEAR
:
rotateTransition.setInterpolator(Interpolator.LINEAR);
The timing for acceleration and deceleration at each Transition
cycle is controlled by the Interpolator
. The default Interpolator
used by Transition is Interpolator.EASE_BOTH
.
You want linear interpolation so add this to your code:
rotateTransition.setInterpolator(Interpolator.LINEAR);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With