使用不同的帧动画调用setBackgroundResource()两次

时间:2011-11-06 15:17:39

标签: android android-animation

我正在尝试展示两种不同的动画。它适用于第一个。但是当我停止第一个动画并用我的第二个动画第二次调用setBackgroundResource()然后调用start()时,它只显示第一帧。 可以两次调用setBackgroundResource()来设置不同的动画吗?

public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        ImageView imgView= (ImageView) findViewById(R.id.imgView);
        imgView.setBackgroundResource(R.anim.animation1);
        AnimationDrawable frameAnimation = (AnimationDrawable) imgView
                .getBackground();

        frameAnimation.setCallback(imgView);
        frameAnimation.start();


            //Schedule the timer

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

                @Override
                public void run() {
                    showAnimation2();
                    }
         }, 20000);
    }//if hasFocus

}

/**
 * Show second animation
 */ 
public void showAnimation2(){
    ImageView imgView= (ImageView) findViewById(R.id.imgView);

    AnimationDrawable frameAnimation = (AnimationDrawable) imgView
                .getBackground();
     // stop first animation
     frameAnimation.stop();

     imgView.setBackgroundResource(R.anim.animation2);
     frameAnimation.setCallback(imgView);

    //start second animation
     frameAnimation.start();
     // here I see the first frame of second animation only
}

我也尝试过使用setVisible(...),但它没有帮助

1 个答案:

答案 0 :(得分:0)

我通过使用两个ImageView并在它们之间切换来解决了这个问题。我使用setVisibility()方法用第一个动画隐藏一个视图并显示第二个视图。