2

我有一个自定义视图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);
4

3 回答 3

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);
于 2010-12-31T03:39:03.717 回答
0

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

于 2010-12-31T05:02:22.187 回答
-1

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

于 2013-04-23T08:15:05.687 回答