我正在使用 aRotateAnimation来旋转我在 Android 中用作自定义循环微调器的图像。这是我的rotate_indefinitely.xml文件,我把它放在res/anim/:
RotateAnimation
rotate_indefinitely.xml
res/anim/
<?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" />
当我将其应用于我的ImageViewusingAndroidUtils.loadAnimation()时,效果很好!
ImageView
AndroidUtils.loadAnimation()
spinner.startAnimation( AnimationUtils.loadAnimation(activity, R.anim.rotate_indefinitely) );
一个问题是图像旋转似乎在每个周期的顶部暂停。
换句话说,图像旋转 360 度,短暂暂停,然后再次旋转 360 度,等等。
我怀疑问题在于动画使用的是默认插值器,如android:iterpolator="@android:anim/accelerate_interpolator"( AccelerateInterpolator),但我不知道如何告诉它不要插值动画。
android:iterpolator="@android:anim/accelerate_interpolator"
AccelerateInterpolator
如何关闭插值(如果这确实是问题)以使我的动画循环顺利进行?
你对 AccelerateInterpolator 是正确的;您应该改用 LinearInterpolator 。
您可以将动画 XML 文件中的内置android.R.anim.linear_interpolator与android:interpolator="@android:anim/linear_interpolator".
android.R.anim.linear_interpolator
android:interpolator="@android:anim/linear_interpolator"
或者您可以在您的项目中创建自己的 XML 插值文件,例如将其命名为res/anim/linear_interpolator.xml:
res/anim/linear_interpolator.xml
<?xml version="1.0" encoding="utf-8"?> <linearInterpolator xmlns:android="http://schemas.android.com/apk/res/android" />
并添加到您的动画 XML:
android:interpolator="@anim/linear_interpolator"
特别注意:如果您的旋转动画在集合内,则设置插值器似乎不起作用。使旋转顶部元素修复它。(这将节省您的时间。)