我想在我的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();
}
答案 0 :(得分:2)
在start()
方法中尝试onCreate
2.3.3中的动画时,我在2.3.3上遇到了同样的问题。我将start()
的电话移至onWindowFocusChanged(boolean)
并且有效(如此处所述:http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html#start())