AndroidのSurfaceViewについて

SurfaceViewを使用すると高速にグラフィックが描画出来るが、ペイントソフトのように断続的に何かを描画する場合、気をつけないと画面が点滅してしまう。

通常以下の流れで画面にグラフィックを描画する。

lockCanvas()でCanvasを取得
      ↓
   グラフィック描画
      ↓
unlockCanvasAndPost()で画面に出力


しかし繰り返し画面に描画を行うと、思うように出力されない場合がある。
これはSurfaceViewの特徴として2つの画面バッファを持っているためで、lockCanvas()で取得できたCanvasのどちらかに描画をしているからだった。

これを解決するには画面サイズのビットマップを作成し、そこに描画してからCanvasに出力する事で回避する事が出来る。


画面サイズのビットマップを作成
      ↓
ビットマップにグラフィック描画
      ↓
 lockCanvas()でCanvasを取得
      ↓
 Canvasにビットマップを描画
      ↓
unlockCanvasAndPost()で画面に出力

ビットマップに出力してから画面に出力するので、一手間増えるが画面は点滅しなくる。