Android2D SurfaceViewにも描画する

SurfaceViewにもViewと同じCanvas感覚で描画ができます。

SurfaceViewは,ゲームなどの高速描画処理用に使っているケースガ多いそうですが, Game開発者でない筆者は, CameraのPreViewに使っているくらいです。

public class CustomSurfaceView extends SurfaceView implements Callback
{
	private Paint paint;
	
	public CustomSurfaceView ( Context context )
	{
		super(context);
		getHolder().addCallback(this);
		paint = new Paint(Paint.ANTI_ALIAS_FLAG);
	}

	@Override
	public void surfaceChanged ( SurfaceHolder holder, int format, int width, int height )
	{
		// Change Surfaceview event
	}

	@Override
	public void surfaceCreated ( SurfaceHolder holder )
	{
		// When created
		// Draw something Lock
		Canvas canvas = holder.lockCanvas();
		canvas.drawColor(Color.BLACK);
		paint.setColor(Color.GREEN);
		canvas.drawRect(0, 0, 50, 50, paint);

		holder.unlockCanvasAndPost(canvas);
		
	}

	@Override
	public void surfaceDestroyed ( SurfaceHolder holder )
	{
	}
}

Canvasは, SurfaceHolderから取得します。スレッド対策でロックしてますね。
SurfaceViewもやっぱりViewなので, Activity上で追加するやり方は, Viewと同じです。