AndroidのSurfaceViewについて
SurfaceViewを使用すると高速にグラフィックが描画出来るが、ペイントソフトのように断続的に何かを描画する場合、気をつけないと画面が点滅してしまう。
通常以下の流れで画面にグラフィックを描画する。
lockCanvas()でCanvasを取得
↓
グラフィック描画
↓
unlockCanvasAndPost()で画面に出力
しかし繰り返し画面に描画を行うと、思うように出力されない場合がある。
これはSurfaceViewの特徴として2つの画面バッファを持っているためで、lockCanvas()で取得できたCanvasのどちらかに描画をしているからだった。
これを解決するには画面サイズのビットマップを作成し、そこに描画してからCanvasに出力する事で回避する事が出来る。
画面サイズのビットマップを作成
↓
ビットマップにグラフィック描画
↓
lockCanvas()でCanvasを取得
↓
Canvasにビットマップを描画
↓
unlockCanvasAndPost()で画面に出力
ビットマップに出力してから画面に出力するので、一手間増えるが画面は点滅しなくる。