2014-12-01 2 views
0

У меня есть несколько TextView, которые я хочу оживить. Я хочу использовать ту же анимацию, но это начинается в разное время для каждого TextView. Я искал, но не мог найти, как это сделать. Я попробовал setStartOffset, но, похоже, я не использую его по назначению. Кто-то может мне помочь? Это мой код:Используйте ту же анимацию в разное время, в разных элементах

TranslateAnimation animation = new TranslateAnimation(
    Animation.ABSOLUTE, 0.0f, Animation.ABSOLUTE, 0.0f, 
    Animation.ABSOLUTE, -1500.0f, Animation.ABSOLUTE, 0.0f); 
    animation.setDuration(3000); 
    tvNumero1.startAnimation(animation); 

    //this fails: 
    animation.setStartOffset(300); 
    tvNumero2.startAnimation(animation); 
+0

Вы пробовали определить два объекта анимации, по одному для каждого? Подход Handler может переусердствовать, поскольку Android уже предоставляет вам используемое смещение. – Toguard

ответ

3

Я создал различные анимации для элемента, в качестве альтернативы, вы можете использовать animaiton из XML-ресурса. Вот код:

//First Animation 
TranslateAnimation animation = new TranslateAnimation(
    Animation.ABSOLUTE, 0.0f, Animation.ABSOLUTE, 0.0f, 
    Animation.ABSOLUTE, -1500.0f, Animation.ABSOLUTE, 0.0f); 
animation.setDuration(3000); 
tvNumero1.startAnimation(animation); 

//Second Animation 
TranslateAnimation animation2 = new TranslateAnimation(
    Animation.ABSOLUTE, 0.0f, Animation.ABSOLUTE, 0.0f, 
    Animation.ABSOLUTE, -1500.0f, Animation.ABSOLUTE, 0.0f); 
animation2.setDuration(3000); 
animation2.setStartOffset(300); 
tvNumero2.startAnimation(animation2); 

В качестве альтернативы, вы можете определить анимацию в файле XML:

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="3000" 
    android:fromYDelta="-1500" 
    android:toYDelta="0" > 

</translate> 

Вот код для XML:

Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.text_move); 
tvNumero1.startAnimation(animation); 

Animation animation2 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.text_move); 
animation2.setStartOffset(300); 
tvNumero2.startAnimation(animation2); 

Предыдущий код, кажется, он ждет для смещения, а затем запускает всю анимацию, я изменил ее на 3 секунды, и она забирает эти 3 секунды.

+0

Огромное спасибо Тогуарду. Это он искал. Выбор кода задумался, но мне нужно было что-то, что бы использовать меньше кода, поскольку мне нужно много одинаковых анимаций (это дождь из элементов). Выбор кода XML идеален. Спасибо вам большое за ваше время –

Смежные вопросы