カスタムView
を作成し、そのメソッドを実装してonDraw()
、そこで描画します。ビュー階層が無効化されるたびonDraw()
に呼び出されます:
public class MyGameView extends View {
@Override
protected void onDraw(Canvas canvas) {
// Any tasks that should run every frame can be placed here. For
// example moving the player and monsters.
// Draw everything to canvas here.
canvas.drawBitmap(mPlayerBitmap, mPlayerX, mPlayerY, null);
canvas.drawBitmap(mMonsterBitmap, mMonsterX, mMonsterY, null);
// Either do a invalidate() to draw in maximum frame rate here. Or do
// postInvalidateDelayed(10) to draw a new frame every 0.1 seconds.
// onDraw() will automatically be called by the system.
postInvalidateDelayed(10);
}
}
を使用して、Button
やなどの他のものを含む既存のビュー階層に新しいビューを追加できます。または、 を使用して、画面全体を占めるコンテンツ ビューとして設定することもできます。TextView
ViewGroup.addView(myGameView)
Activity.setContentView(myGameView)
繰り返し発生するタスクを投稿しView.postDelayed()
て、 と同じスレッドで実行されるようにすることができますonDraw()
。をポストすることができ、その後、そのメソッドが呼び出されるRunnable
たびに自身をポストします。ゲームがバックグラウンドにあるときに何も実行されないようにするために、 にrun()
タスクを投稿してActivity.onResume()
で削除することをお勧めします。Activity.onPause()
@Override
protected void onResume() {
super.onResume();
mMyGameView.postDelayed(mRunnable, 5000);
}
@Override
protected void onPause() {
super.onPause();
mMyGameView.removeCallbacks(mRunnable);
}
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
// Perform reoccurring task...
mMyGameView.postDelayed(mRunnable, 5000);
}
};