Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何运行动画序列?动画集让我失望了_Java_Android_Animation_Nested Class - Fatal编程技术网

Java 如何运行动画序列?动画集让我失望了

Java 如何运行动画序列?动画集让我失望了,java,android,animation,nested-class,Java,Android,Animation,Nested Class,我有一个自定义视图拨号。此视图有一个自定义动画DialAnimation,它是作为Dial的嵌套类编写的。下面是我的活动中的代码,它实例化拨号,并尝试在上面执行一系列动画。当代码运行时,屏幕上只显示一个动画。我错过了什么 Dial dial = (Dial) findViewById(R.id.dial); DialAnimation anim1 = dial.new DialAnimation(0, 90, 3000); DialAnimation anim2 = dial.new DialA

我有一个自定义视图
拨号
。此视图有一个自定义动画
DialAnimation
,它是作为
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);

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

在doinbackground()方法中尝试animation listner这将按顺序更新动画 …或您可以在应用程序中使用简单线程。

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