SurfaceViewの描画処理入門

基本

キャンバスをロックして描画してキャンバスを返答することで描画するのが1セット

        // キャンバスを取得
        Canvas canvas = getHolder().lockCanvas();
        
        // 取得したCanvasで色々な描画処理
        
        // ロックを開放して描画
        getHolder().unlockCanvasAndPost(canvas);

描画の仕組み

SurfaceViewはViewと言いつつもWindowを作る。透明にする場合はWindowのTopに持ってくる必要があるため、SurfaceViewの上にViewを重ねることはできない。SurfaceViewの仕組みで上にViewを重ねたい場合はTextureViewを使えば良いらしい。詳しくは以下のリンクを参照のこと。

背景を透明にする

Formatを透明にするとできる。半透明でもよい

    getHolder().setFormat(PixelFormat.TRANSLUCENT);

アニメーション

Threadを作ってあげて頑張る

        Thread animThread = new Thread(new Runnable() {
            @Override
            public void run() {
                boolean isAnimation
                while(isAnimation) {
                    // ここで基本通りcanvasLockして描画処理を書く
                    // アニメーション終わったらwhileループを抜ける
                }
            }
        });
        animThread.start();