2015-12-09 4 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); 
Смежные вопросы