0

多数の大きなベクターオーバーレイを備えた Google MapView に基づくアプリがあります。一度に最大 500 個の複雑なポリゴンを画面に表示できます。私の電話 (Android 2.3.4) では、MapView の再描画は、必要かどうかに関係なく、短い間隔で自動的にトリガーされます。

問題:
マップの再描画時間が長いため、UI の応答が遅くなることがあります。たとえば、メニューを開くのに約 1 秒かかる場合があります。どのダイアログも反応が悪いです。

質問:
MapView の自動再描画をオフにすることはできますか? または、UI の応答を改善する方法について何か他の考えはありますか?

*MapView.SetEnabled(false) はそれを行わず、MapView はクリックできなくなるだけです。MapView.setWillNotDraw(true) を実行すると、黒い画面が表示されます。

*私の知る限り、Android 2.2 では自動再描画は行われません (変更を確認するには MapView.Invalidate() が必要です)。OS/ライブラリのバージョンだけでなく、ハードウェアの問題かもしれません。

4

1 に答える 1

1

MapView に関する私の知識によると、map.postInvalidate() を呼び出さない限り、マップをドラッグするかズームイン/ズームアウトするか、マップが再描画されるだけです。あなたの質問に答えるために:

「MapView の自動再描画をオフにすることはできますか?」はい。マップが描画/再描画されるたびに呼び出される onDraw() メソッドであるため、MapView の onDraw() メソッドをオーバーライドする必要があります。マップを描画する必要があります (デフォルトの描画は、super.onDraw() 呼び出しを使用して行われます)、またはオーバーレイなどの一部のみを具体的に描画する必要がある場合。

于 2012-08-11T02:21:57.997 に答える