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動(dòng)畫 private AnimationDrawable frameAnimation = null; Context mContext = null; //定義一個(gè)Drawable對(duì)象 Drawable mBitAnimation = null; public GameView(Context context) { super(context); mContext = context; //實(shí)例化AnimationDrawable對(duì)象 frameAnimation = new AnimationDrawable(); /*裝載資源*/ //這里用一個(gè)循環(huán)裝載所有名字類似的資源 //如"a1...........15.png"的圖片 for(int i = 1; i <= 15; i++){ int id = getResources().getIdentifier("a" + i, "drawable", mContext.getPackageName()); //此方法返回一個(gè)可繪制的對(duì)象與特定的資源ID相關(guān)聯(lián) mBitAnimation = getResources().getDrawable(id); /*為動(dòng)畫添加一幀*/ //參數(shù)mBitAnimation是該幀的圖片 //參數(shù)500是該幀顯示的時(shí)間,按毫秒計(jì)算 frameAnimation.addFrame(mBitAnimation, 500); } /*上邊用到了Resources的getIdentifier方法 方法返回一個(gè)資源的唯一標(biāo)識(shí)符,如果沒有這個(gè)資源就返回0 * 0不是有效的標(biāo)識(shí)符,在說(shuō)說(shuō)這個(gè)方法幾個(gè)參數(shù)的含義 * 第一個(gè) 就是我們的資源名稱了。 * 第二個(gè) 就是我們要去哪里找我們的資源 我們的圖片在drawable 下 所以為drawable * 第三個(gè) 我們用了Context的getPackageName返回應(yīng)用程序的包名 * */ //設(shè)置播放模式是否循環(huán)播放,false表示循環(huán),true表示不循環(huán) frameAnimation.setOneShot(false); //設(shè)置本類將要顯示的這個(gè)動(dòng)畫 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: //當(dāng)按手機(jī)的上方向鍵時(shí)開始播放 frameAnimation.start(); break; } return true; } } |
|