Android: две анимации разной продолжительности

У меня есть две анимации с разной продолжительностью, как показано ниже:
Аним 1:

    TranslateAnimation trans1 = new TranslateAnimation(0, 0, 0, 500);  
    trans1.setStartOffset(0);  
    trans1.setDuration(5000);  
    trans1.setFillAfter(true);  

Аним 2:

    TranslateAnimation trans2 = new TranslateAnimation(0, -100, -200, -200);  
    trans2.setDuration(200);  
    trans2.setRepeatCount(25);  
    trans2.setFillAfter(true);  

Как видите, у этих анимаций разная продолжительность. Я хотел бы анимировать Anim2 (продолжительность 200) в цикле 25 раз за один раз Анимация Anim1 (продолжительность 5000) от Y: 0 до 500.

Я пробовал использовать AnimationSet и addAnimation, но не хочет работать. Не могли бы вы дать мне несколько советов, как я могу решить эту проблему?

Мой код:

AnimationSet rootSet = new AnimationSet(true);   
rootSet.setInterpolator(new AccelerateInterpolator());  
rootSet.setRepeatMode(Animation.INFINITE);  
rootSet.setRepeatCount(200);  
rootSet.setDuration(5000);  
rootSet.setFillAfter(true);  

    TranslateAnimation trans1 = new TranslateAnimation(0, 0, 0, 500);  
    trans1.setStartOffset(0);  
    trans1.setDuration(5000);  
    trans1.setFillAfter(true);  

rootSet.addAnimation(trans1);


AnimationSet rootSet2 = new AnimationSet(true);  
rootSet2.setInterpolator(new AccelerateInterpolator());  
rootSet2.setRepeatMode(Animation.INFINITE);  
rootSet2.setRepeatCount(200);  
rootSet2.setDuration(200);  

    TranslateAnimation trans2 = new TranslateAnimation(0, -100, -200, -200);  
    trans2.setDuration(200);
    trans2.setRepeatCount(25);
    trans2.setFillAfter(true);

rootSet2.addAnimation(trans2);  

rootSet.addAnimation(rootSet2);  

iv.startAnimation(rootSet);  

РЕДАКТИРОВАТЬ:
Когда я проигрываю только анимацию trans2, она повторяется 25 раз, как я хотел (по горизонтали). И, кроме того, я бы хотел, чтобы эта анимация анимировалась (вся горизонтальная анимация, а не только изображение) вертикально (trans1).

Надеюсь, что это описание будет более понятным.

Когда я добавил эти две анимации в один AnimationSet, первая анимация вообще не работает, а изображение (не анимация) переводится линейно в -200,500.


person Tom B    schedule 05.12.2012    source источник
comment
Проверьте это: developer.android.com/guide/topics/graphics /   -  person MysticMagicϡ    schedule 06.12.2012
comment
Спасибо за ответ, но AnimatorSet доступен с Android 3.0. Мне нужно что-то для 2.3+. Я нашел библиотеку NineOld (nineoldandroids.com), но хотел бы знать, есть ли какое-нибудь простое решение этой проблемы.   -  person Tom B    schedule 06.12.2012
comment
Ok. Тогда обязательно ли использовать набор анимаций? Потому что я сделал это, используя всего 2 разные анимации (а не части набора анимации), и они воспроизводились одновременно   -  person MysticMagicϡ    schedule 06.12.2012
comment
Не работает не очень конкретно. Не могли бы вы сказать нам, что не работает?   -  person Wolfram Rittmeyer    schedule 06.12.2012
comment
Одна анимация анимирует просмотр изображения по горизонтали и повторяет одну и ту же анимацию 25 раз, и я хочу перевести эту ВСЕ анимацию по вертикали. Я хочу иметь что-то ПОДОБНОЕ то, что вы делаете с пальцем, когда читаете.   -  person Tom B    schedule 06.12.2012


Ответы (1)


Теперь я понимаю, что ты хочешь сделать. Вам, вероятно, лучше сделать несколько анимаций - по одной для каждой «линии». Добавьте AnimationListener, чтобы узнать, когда закончится предыдущая анимация ( onAnimationEnd callback), перейдите на одну строку вниз и снова перейдите справа налево.

Все они в основном одинаковы, только значения fromYDelta и toYDelta будут меняться для каждой анимации.

person Wolfram Rittmeyer    schedule 06.12.2012
comment
Спасибо. Это может быть решение моей проблемы :) - person Tom B; 08.12.2012