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と同じです。
