在Android中我用RotateAnimation自定义了一个image,想让它循环转动,下面是我在res/anim/中的rotate_indefinitely.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:duration="1200" />
我用AndroidUtils.loadAnimation()把上述内容应用到ImageView时,一切运作正常:
spinner.startAnimation(
AnimationUtils.loadAnimation(activity, R.anim.rotate_indefinitely) );
但是,每当image转过360°到达最高点时,就会暂停片刻,然后才继续转动,无法连续的进行循环转动,我猜想,有可能是因为我错误的使用了android:iterpolator="@android:anim/accelerate_interpolator"(AccelerateInterpolator)这个内置程序,但我不太清楚该如何解决这种错误,保证image可以连续无停顿的旋转?
答:Bakhtiyor
(最佳答案)
你应该使用LinearInterpolato,通过android:interpolator="@android:anim/linear_interpolator".
找到animation XML文件,然后使用内置的android.R.anim.linear_interpolator。
或者你可以创建自己的XML interpolation文件,例如将它命名为res/anim/linear_interpolator.xml:
然后添加动画XML:
答:ferdy182
设定toDegrees="359",因为360º和0º指的是一个度数
答:Norm Tatlock
无论我怎么做,都不能保证用如下方法可以让image连续循环转动,我只能尽量缩小停顿的时间。如果你不需要做太多次的转动,可以试试如下代码:
答:Luis E. Fernandez
建议使用如下方法:
如果想要往相反方向转的话: