2015-12-09 61 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);