逐帧动画能够放置在/res下的anim或drawable目录中。若是由彻底由编码实现,咱们须要使用到AnimationDrawable对象。 java
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView; android
public class FrameActivity extends Activity {
private ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.frame);
image = (ImageView) findViewById(R.id.frame_image);
image.setBackgroundResource(R.anim.frame);
AnimationDrawable anim = (AnimationDrawable) image.getBackground();
anim.start();
}
} app
看似十分完美,跟官方文档上写的同样,然而当咱们运行这个程序时会发现,它只停留在第一帧,并无出现咱们指望的动画,什么缘由呢?如何解决呢? ide
出现这种现象是由于当咱们在onCreate中调用AnimationDrawable的start方法时,窗口Window对象尚未彻底初始化,AnimationDrawable不能彻底追加到窗口Window对象中,那么该怎么办呢?咱们须要把这段代码放在onWindowFocusChanged方法中,当Activity展现给用户时,onWindowFocusChanged方法就会被调用,咱们正是在这个时候实现咱们的动画效果。固然,onWindowFocusChanged是在onCreate以后被调用的 动画
package com.itheima; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.view.MotionEvent; import android.widget.ImageView; @SuppressWarnings("unused") public class FrameAnimation1Activity extends Activity { private ImageView iv ; private AnimationDrawable drawable; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); iv = (ImageView) this.findViewById(R.id.frame_image); // iv.setBackgroundResource(R.drawable.list); // drawable = (AnimationDrawable) iv.getBackground(); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); iv.setBackgroundResource(R.drawable.list); AnimationDrawable anim = (AnimationDrawable) iv.getBackground(); anim.start(); } // @Override // public boolean onTouchEvent(MotionEvent event) { // if(event.getAction()==MotionEvent.ACTION_DOWN){ // //开始播放帧动画 // drawable.start(); // // } // return super.onTouchEvent(event); // } }
运行一下,动画就能够正常显示了。 this
代码下载:http://download.csdn.net/detail/mwq384807683/5963973 编码