私はいくつかのImageViews(透明領域を持つ)が互いの上にある相対レイアウトを持っています。問題は、それらのいずれかを無効にすると、他のすべてのonDraw()メソッドも呼び出されることです。これは正常ですか? これは大きなパフォーマンスの問題であるため、すべてのレイヤー(ビュー)を再描画する必要はありません。無効化されたビューを再描画するだけです。Android:影響を受けていないレイヤの無効化/再描画を回避するにはどうすればよいですか?
アイデアはありますか?
私はいくつかのImageViews(透明領域を持つ)が互いの上にある相対レイアウトを持っています。問題は、それらのいずれかを無効にすると、他のすべてのonDraw()メソッドも呼び出されることです。これは正常ですか? これは大きなパフォーマンスの問題であるため、すべてのレイヤー(ビュー)を再描画する必要はありません。無効化されたビューを再描画するだけです。Android:影響を受けていないレイヤの無効化/再描画を回避するにはどうすればよいですか?
アイデアはありますか?
申し訳ありませんが、確かめてください。 1つのレイアウト/ビューでアニメーションボタンを持っていて、グラフィックレイアウト/ビュー(onDraw()で描画)をオーバーラップし、ボタンを押すと(アニメーション化...)、基礎となるグラフィック全体を再度描画する必要がありますか?私には奇妙に聞こえる - なぜ、それぞれのビューに無効化メソッドがあるのですか? ... – stoefln
@stoefln: "基礎となるグラフィック全体を再度描画する必要がありますか?" - 再描画の範囲は、Androidが再描画する必要があると思われるものになります。Androidでは、自分では考えられないように再描画する必要があると思う傾向があります。 – CommonsWare
"Traceviewを使用して、パフォーマンスのボトルネックが存在する場所を特定します。 →ボトルネックはパスの描画です。私はこれをより速くすることはできません。私が必要とするのは、ビューをキャッシュする可能性だけです。なぜなら、一度描画する必要があるからです。 "または、おそらく実際にレイヤーを使用します。" →これはandroid 2.1でサポートされていません。 "...代わりにキャンバスに直接描画する" - >それが私の行いです。私はビューのonDraw()でキャンバスに描画しますが、私が言ったように、これはいくつかの処理を必要とします。別のビューの一部のコンポーネントを再描画するたびに余裕がありません。 – stoefln