我正在尝试一个简单的逐帧动画。我的动画可以按下按钮,但我想它应该在活动开始或加载时启动。我已经尝试 onWindowFocusChanged()方法按照文档中的说明启动动画。我想我犯的是愚蠢的错误。任何人都有想法。
public class FirstActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
Button btnalarm;
AnimationDrawable AniFrame;
ImageView images;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
images=(ImageView)findViewById(R.id.myImageView);
images.setBackgroundResource(R.drawable.demo_animation);
AniFrame = (AnimationDrawable)images.getBackground();
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
Log.v("in focus", "in focus");
AniFrame.start();
}
demo_animation.xml文件---->
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/a" android:duration="50" />
<item android:drawable="@drawable/b" android:duration="50" />
<item android:drawable="@drawable/c" android:duration="50" />
<item android:drawable="@drawable/d" android:duration="50" />
<item android:drawable="@drawable/e" android:duration="50" />
<item android:drawable="@drawable/f" android:duration="50" />
<item android:drawable="@drawable/h" android:duration="50" />
<item android:drawable="@drawable/i" android:duration="50" />
<item android:drawable="@drawable/j" android:duration="50" />
<item android:drawable="@drawable/k" android:duration="50" />
</animation-list>
答案 0 :(得分:0)
添加 AniFram.start()到onCreate()的末尾。
同时给你的R.layout.main充气。
示例:
LinearLayout layout = (LinearLayout)findViewById(R.id.main);
layout.startAnimation(AniFrame);
还要检查logcat是否存在问题。
编辑:
从文档中查看此内容应该提供帮助。
答案 1 :(得分:0)
只需使用另一个线程。它会正常工作。
public void onCreate(Bundle savedInstanceState) {
//your code
//At last of onCreate add these lines
images.post(new MyAnimation());
}
class MyAnimation implements Runnable{
@Override
public void run(){
AniFrame.start();
}
}
现在它会起作用,只需检查一下。
答案 2 :(得分:0)
尝试在开始动画之前使用setCallback,如下所示:
AniFrame.setCallback(images);