逐幀動畫能夠放置在/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 編碼