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