miyabihitoの日記

個人的な技術メモ

SurfaceViewの使い方

SurfaceViewクラス
UIスレッド以外からも描画を行うことができるビュー
描画処理を別スレッド(runメソッド中)で実行するのが定石

SurfaceHolderインターフェース
SurfaceViewにアクセスするためのインターフェース
SurfaceViewのgetHolderメソッドで取得
・addCallback
SurfaceViewの各種イベント時に呼び出されるコールバック用のオブジェクトの設定
・lockCanvas
描画処理を開始するために描画領域をロックする
・unlockCanvasAndPost
描画処理の完了後に呼び出しアンロックする

SurfaceHolder.Callbackインターフェース
SurfaceViewの各種イベント時に呼び出されるコールバックメソッドを持つ
・surfaceChanged
ビューのフォーマットやサイズが変更された時に呼び出される
・surfaceCreated
ビューが生成された直後に呼び出される。
・surfaceDestroyed
ビューが破棄される直前に呼び出される。

上記3つとも引数で、SurfaceHolderをもらえる。

作成したプログラムでは、SurfaceViewの子クラスと、SurfaceHolder.CallbackとRunnableを実装したクラスの
2クラスを作成して実装した。

全てを1つのクラスで実装することも可能だけど、ゴチャゴチャするかも。。。