最近私は幾分似たような問題を解決しなければなりませんでした。
多くの場合、頻繁に再描画したくない背景グラフィックを含む重複した複数のビューと、頻繁に更新されるグラフィックを含む前景ビューを使用できます。次に、パフォーマンスを得るために、バックグラウンドViewのonDraw()
をデザインして、それをクラス変数として保持しているビットマップに裏打ちすることができます。最初のonDraw()
の背景グラフィックでは、比較的遅いキャンバスへの描画を行います。その後のonDraw()
の呼び出しでは、Bitmapをキャンバスに描画するだけです。
私はこれを自分でやったことがあります。基本的に私のアプリケーションは、いくつかのグラフィカルなゲージを表示しています。これらのゲージには、モデルデータの変更に伴って何度も再描画する必要があるポインターグラフィックとゲージ面、ゲージ面の凡例が1回だけ描画されます。まず、バックグラウンド・グラフィックスと前景グラフィックスを別々の重なり合うビューに分割します。現在、フォアグラウンドポインタグラフィックを無効化して再描画すると、オーバーラップするものも無効化されるため、バックグラウンドグラフィックスビューのメソッドは、ポインタViewが再描画されるたびに呼び出されます。バックグラウンドビューは、背景グラフィックスを一度描画するだけで、キャンバスをバックアップするBitmapを保持します。その後、このビットマップをCanvasに描画します(Path()オブジェクトを使用してグラフィックを最初に作成するよりもはるかに高速です) 。
3210