【Androidアプリ作成】描画が遅い時はSurfaceViewを使って高速化

ゲームを作っていると、どうしても描画処理が重くなる傾向があります。

そんなときは、ViewをSurfaceViewに呼びかえることで、
描画高速化を期待できます。

以下のようにコードを追加するだけで導入できるので、
お試しください。

■今までのView
public class MyView extends View
{

public MyView(Context context, AttributeSet attrs)

{

this(context, attrs);

}

@Override

public void onDraw(Canvas canvas)

{

super.onDraw(canvas);

~~描画処理~~

}
}

■SurfaceViewに呼び代えたもの
public class MySurfaceView extends SurfaceView
{

public MyView(Context context, AttributeSet attrs)

{

this(context, attrs);

getHolder().addCallback(new SurfaceHolder.Callback() {

public void surfaceDestroyed(SurfaceHolder surfaceholder) {

// nop

}

public void surfaceCreated(SurfaceHolder surfaceholder) {

doDraw(surfaceholder);

}

public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, int k) {

doDraw(surfaceholder);

}

});

}

private void doDraw(SurfaceHolder holder)

{

Canvas canvas = holder.lockCanvas();

if (canvas == null){ return; }

try

{

onDraw(canvas);

}

finally

{

if ( canvas != null )

{

holder.unlockCanvasAndPost(canvas);

canvas = null;

}

}

}

@Override

public void onDraw(Canvas canvas)

{

super.onDraw(canvas);

~~描画処理~~

}
}

オレンジの部分が、追加した処理です。

2011.6.18
NECO

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA

*