Как я могу запустить последовательность анимаций?AnimationSet подводит меня - PullRequest
2 голосов
/ 31 декабря 2010

У меня есть пользовательский вид Dial.Это представление имеет пользовательскую анимацию DialAnimation, которая была написана как вложенный класс Dial.Ниже приведен код из моего Activity, который создает экземпляр Dial и пытается выполнить на нем последовательность анимаций.Когда код запускается, только одна из анимаций видна на экране.Что мне здесь не хватает?

Dial dial = (Dial) findViewById(R.id.dial);
DialAnimation anim1 = dial.new DialAnimation(0, 90, 3000);
DialAnimation anim2 = dial.new DialAnimation(180, 360, 3000);
anim2.setStartOffset(3500);

AnimationSet set = new AnimationSet(false);
set.addAnimation(anim1);
set.addAnimation(anim2);
dial.startAnimation(set);

Ответы [ 3 ]

5 голосов
/ 31 декабря 2010

Один из способов сделать это - установить AnimationListener для первой анимации и переопределить onAnimationEnd (), чтобы запустить следующую анимацию в последовательности. Это будет выглядеть примерно так:

animation1Listener = new Animation.AnimationListener() {

            @Override
            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                 dial.startAnimation(animation2)
            }
}

animation1.setAnimationListener(animation1Listener);
dial.startAnimation(animation1);
0 голосов
/ 23 апреля 2013

Добавьте метод .setDuration (3500) к каждой анимации и убедитесь, что время для продолжительности и время для метода .setStartOffset (3500) для второй анимации совпадают.

0 голосов
/ 31 декабря 2010

попробуйте анимацию списка в методе doinbackground (), это обновит вашу анимацию в последовательности ..ИЛИ вы можете использовать простой поток в вашем приложении.

...