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

发布于 2024-10-09 19:19:26 字数 543 浏览 5 评论 0原文

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

I have a custom view Dial. This view has a custom animation DialAnimation that was written as a nested class of Dial. Below is the code from my Activity that instantiates Dial and attempts to perform a sequence of animations on it. When the code is run, only one of the animations is seen onscreen. What am I missing here?

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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

趴在窗边数星星i 2024-10-16 19:19:26

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

one way to do it would be to set an AnimationListener on the first animation and override the onAnimationEnd() to make it start the next animation in the sequence. That would look something like this:

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);
荆棘i 2024-10-16 19:19:26

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

try animation listner in doinbackground() method this will update your animation in sequence
..OR u can use simple thread in you application .

半世晨晓 2024-10-16 19:19:26

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

Add a .setDuration(3500) method to each animation and ensure that the time for the duration and the time for the .setStartOffset(3500) method for the secondanimation match.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文