如何运行一系列动画? AnimationSet让我失望了

时间:2010-12-31 03:17:30

标签: java android animation nested-class

我有自定义视图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 个答案:

答案 0 :(得分:5)

一种方法是在第一个动画上设置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);

答案 1 :(得分:0)

在doinbackground()方法中尝试动画监听器,这将按顺序更新动画 ..或者你可以在你的应用程序中使用简单的线程。

答案 2 :(得分:-1)

为每个动画添加.setDuration(3500)方法,并确保.setStartOffset(3500)方法的持续时间和时间的时间与secondanimation匹配。