2015-12-09 37 views
1

我有一个过渡动画XMLAndroid:如何动态改变动画速度?

<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> 

我要上几个项目,但与时间长短不一应用此动画。我试图通过调用setDuration动态更改持续时间,然后调用startAnimation。

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

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

mSlideLeft.setDuration(600); 
view3.startAnimation(mSlideLeft); 

但所有查看动画的持续时间相同。我如何动态更改动画的持续时间?

回答

4

您使用相同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);