Android:如何动态更改动画速度?

cry*_*sis 4 android android-animation

我有一个过渡动画xml

<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fillAfter="true">

    <translate
        android:fromXDelta="100%p"
        android:toXDelta="0%p"
        android:duration="400"/>
</set>
Run Code Online (Sandbox Code Playgroud)

我想在几个项目上应用此动画,但持续时间不同.我试图通过调用setDuration然后调用startAnimation来动态更改持续时间.

mSlideLeft.setDuration(400);
view1.startAnimation(mSlideLeft);

mSlideLeft.setDuration(500);
view2.startAnimation(mSlideLeft);

mSlideLeft.setDuration(600);
view3.startAnimation(mSlideLeft);
Run Code Online (Sandbox Code Playgroud)

但所有观看动画的持续时间相同.如何动态更改动画的持续时间?

Bar*_*ski 5

你正在Animation为这三个使用相同的对象Views.所以你要调用setDuration同一个对象3次.

Animation如果要使用三个不同的持续时间,则需要创建三个单独的对象.

Animation firstSlideLeft = AnimationUtils.loadAnimation(context, R.anim.slide_left);
firstSlideLeft.setDuration(400);
view1.startAnimation(firstSlideLeft);

Animation secondSlideLeft = AnimationUtils.loadAnimation(context, R.anim.slide_left);
secondSlideLeft.setDuration(500);
view2.startAnimation(secondSlideLeft);

Animation thirdSlideLeft = AnimationUtils.loadAnimation(context, R.anim.slide_left);
thirdSlideLeft.setDuration(600);
view3.startAnimation(thirdSlideLeft);
Run Code Online (Sandbox Code Playgroud)