package xiaohang.zhimeng; import android.content.Context; import android.graphics.Canvas; import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.Drawable; import android.view.KeyEvent; import android.view.View; public class GameView extends View{ //定義AnimationDrawable動畫 private AnimationDrawable frameAnimation = null; Context mContext = null; //定義一個Drawable對象 Drawable mBitAnimation = null; public GameView(Context context) { super(context); mContext = context; //實例化AnimationDrawable對象 frameAnimation = new AnimationDrawable(); /*裝載資源*/ //這里用一個循環(huán)裝載所有名字類似的資源 //如"a1...........15.png"的圖片 for(int i = 1; i <= 15; i++){ int id = getResources().getIdentifier("a" + i, "drawable", mContext.getPackageName()); //此方法返回一個可繪制的對象與特定的資源ID相關聯(lián) mBitAnimation = getResources().getDrawable(id); /*為動畫添加一幀*/ //參數(shù)mBitAnimation是該幀的圖片 //參數(shù)500是該幀顯示的時間,按毫秒計算 frameAnimation.addFrame(mBitAnimation, 500); } /*上邊用到了Resources的getIdentifier方法 方法返回一個資源的唯一標識符,如果沒有這個資源就返回0 * 0不是有效的標識符,在說說這個方法幾個參數(shù)的含義 * 第一個 就是我們的資源名稱了。 * 第二個 就是我們要去哪里找我們的資源 我們的圖片在drawable 下 所以為drawable * 第三個 我們用了Context的getPackageName返回應用程序的包名 * */ //設置播放模式是否循環(huán)播放,false表示循環(huán),true表示不循環(huán) frameAnimation.setOneShot(false); //設置本類將要顯示的這個動畫 this.setBackgroundDrawable( frameAnimation ); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); } public boolean onKeyUp(int keyCode, KeyEvent event){ switch (keyCode) { case KeyEvent.KEYCODE_DPAD_UP: //當按手機的上方向鍵時開始播放 frameAnimation.start(); break; } return true; } } |
|