即使从外部onCreate调用后,动画也无法启动

时间:2012-03-14 01:37:55

标签: android android-animation

我想在我的android活动中做逐帧动画。我浏览了开发人员指南,发现必须从onCreate()方法外部调用start()方法才能启动动画。我使用类似的onTouchEvent()方法来启动动画。但动画尚未开始。在搜索时,我发现了以下帖子(Starting Frame-By-Frame Animation),其中提到动画可以从onClick()方法启动(但未提供代码)。我无法做到这一点。有人可以帮我解决这个问题吗?

我想补充一点,我可以从onTouchEvent方法调用Mediaplayer对象的start(),而不是动画的start()。

我还有一个问题。我正在使用模拟器2.3.3。 SDK 2.3.3是否支持动画?

我在这里发布我的代码:

public class firstface extends Activity {
MediaPlayer mp1;
AnimationDrawable anim;

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);     

    mp1 = MediaPlayer.create(this, R.raw.red);
    status = ReadStatus();

    ImageView image = (ImageView)findViewById(R.id.image_1); 
    image.setBackgroundResource(R.drawable.anim_1);
    anim = (AnimationDrawable) image.getBackground();

    /*image.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
        mp1.start();            
        anim.start();
        } 
    });*/

    Button but_1_2 = (Button) findViewById(R.id.button_1_2);
    but_1_2.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            to_be_writ = my_face + ":l:" + down + ":d:n"; 
            WriteStatus(to_be_writ);
            intent = "android.intent.action." + right + "FACE";
            startActivity(new Intent(intent));
        }
    });
}

public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            mp1.start();
            anim.start();
            return true;
        }
        return super.onTouchEvent(event);
    }


    @Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    mp1.release();

}

@Override
protected void onStop() {
    // TODO Auto-generated method stub
    super.onStop();
    mp1.release();

}

1 个答案:

答案 0 :(得分:2)

start()方法中尝试onCreate 2.3.3中的动画时,我在2.3.3上遇到了同样的问题。我将start()的电话移至onWindowFocusChanged(boolean)并且有效(如此处所述:http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html#start())