SurfaceViewで画像表示

「SurfaceViewで画像表示」の編集履歴(バックアップ)一覧はこちら

SurfaceViewで画像表示」(2012/05/01 (火) 19:15:08) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

**SurfaceView 以外のクラスから画像を表示させる ゲーム製作では Character のクラスで画像の生成を行いたい。 しかし、Character クラスを SurfaceView や Activity クラスから extends すると、エラーになる。 そこで、Activity から SurfaceView を通して、Character へ Context を渡してやり、画像を取得する。 #highlight(){{ import android.app.Activity; import android.os.Bundle; public class GameActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //Contextを渡してる setContentView(new SampleSurfaceView(this)); } } }} #highlight(){{ import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.SurfaceHolder.Callback; public class SampleSurfaceView extends SurfaceView implements Callback, Runnable { private SurfaceHolder mholder; private Thread mLooper; Resources res = this.getContext().getResources(); Bitmap image = BitmapFactory.decodeResource(res, R.drawable.chra_stand_00); Context myContext; Character C; public SampleSurfaceView(Context context) { super(context); mholder = getHolder(); //callbackメソッドを登録 mholder.addCallback(this); //フォーカスを当てる(必要かよく分からない) setFocusable(true); myContext=context; } @Override public void run() { Canvas canvas = null; //ここで Character 初期化。contextとcanvasを渡す C=new Character(myContext,canvas); //画面に描画 canvas = mholder.lockCanvas(); doDraw(canvas); mholder.unlockCanvasAndPost(canvas); } } private void doDraw(Canvas canvas){ Paint paint = new Paint(); //描画処理(Lock中なのでなるべく早く) canvas.drawColor(Color.BLACK); canvas.drawBitmap(C.getImage(), 0, 0, paint); } } }} #highlight(){{ import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; public class Character{ Bitmap img0; public Character(Context context,Canvas canvas) { Resources res = context.getResources(); img0 = BitmapFactory.decodeResource(res, R.drawable.ファイル名); } public Bitmap getImage() { // 画像を返す return img0; } } }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: