为什么旋转动画有缓和效果?

时间:2013-06-10 16:34:21

标签: android android-animation

我正在尝试开发我的第一个Android应用。我读了很多关于动画的文章。现在我的布局上有一个ImageView,我想将它旋转360度。而且这个动画永远重复。所以这是我的solteypanim.xml文件:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:ordering="sequentially" >
    <objectAnimator
    android:duration="3000"
        android:propertyName="rotation"
        android:repeatCount="infinite"
        android:valueTo="360"
        android:valueFrom="0" />
</set>

这是我的活动代码

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    ...    
    ImageView solTeyp = (ImageView)findViewById(R.id.solTeyp);
    AnimatorSet solTeypAnim = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.solteypanim);
    solTeypAnim.setTarget(solTeyp);
    solTeypAnim.start();
    ...
    }

它正在工作但是有一个问题。更改旋转的值不是线性的。我的意思是动画的开始和结束都有缓和效果。它开始缓慢,然后加快速度,降低速度。每回合都有同样的问题。

你能告诉我如何禁用这种缓和效果?

1 个答案:

答案 0 :(得分:4)

好的,只是找到答案。我应该将线性插值器设置为 objectAnimator ,而不是我的 set

像这样:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="sequentially" >
    <objectAnimator
    android:duration="3000"
    android:interpolator="@android:anim/linear_interpolator"
        android:propertyName="rotation"
        android:repeatCount="infinite"
        android:valueTo="360"
        android:valueFrom="0" />
</set>