から派生したカスタム ビューを使用して迷路を描画する単純な Android アプリケーションを作成しましたSurfaceView。LunarLander サンプル アプリケーションのモデルに従い、バックグラウンド スレッドを使用してすべての計算と描画をSurfaceHolderオブジェクトに直接実行します。
すべて順調で、小規模/中規模の迷路ではうまく動作していますが、迷路のセル サイズを 8 ピクセルに設定すると、アプリケーションがクロールする迷路内に多数のセルが存在します。
コードは、変更されていない場合でもすべてのセルを描画するという点で、私が気に入らないことを行っています。これは、SurfaceViewダブルバッファーからの画面のちらつきを避けるために必要です (アプリケーションの以前の反復では、変更されたものだけを描画していました。びくびくした混乱をもたらしました)。
そのとき私が望むのは、使用する機能ですが、SurfaceView描画されるものをより選択的にする機能です。これは可能ですか?そうでない場合、代替手段は何ですか?オフスクリーン ビットマップを保持し、最初にそこに選択的に描画するのはどうですか?
編集: オフスクリーンBitmapとCanvas組み合わせを実装し、タイマー駆動のステート マシンによって書き込まれ、カービング/ソリューション中に影響を受ける領域のみを描画しました。次に、画面外のビットマップ全体をメソッドSurfaceView内に描画するだけでrun()、問題は解決しました。セル サイズを 5 ピクセルに下げることができ、パフォーマンスは問題ありません。