7

ユーザーが一連の事前定義されたコントロールから複雑な画面レイアウトを作成できるアプリを入手しました。次に、これらのコントロールが相互に対話して、最終的な機能を生成します。私が見ている問題は、私が何をしても、1つのコントロールの変更によって引き起こされた再描画が画面全体を強制的に再描画しているように見えることです(「画面の変更を表示」を有効にすることで見られます)。背後に XML があまりないカスタム コントロールがたくさんあるので、この再描画はかなり遅くなる可能性があります。

たとえば、1 つのコントロールが、いくつかの線形レイアウトから構築された電卓である場合があります。もう 1 つは、線形レイアウトから動的に生成されたコマンド グリッド ビルドです。画面が読み込まれると、これらのそれぞれが親の相対レイアウトに追加されます。電卓のキーを押すと、コマンド グリッドが強制的に再描画されますが、そのビューは何も変更されていません。

ハードウェア アクセラレーションをオンにして、すべてのビューのレイヤー タイプを LAYER_TYPE_HARDWARE に変更しようとしましたが、うまくいきませんでした。

画面の特定のサブセクションのみが再描画されるようにするにはどうすればよいですか? この時点では、自分自身を無効にするための呼び出しは行っていませんが、ボタン、レイアウト、およびその他の UI コンポーネントの独自のテーマ設定可能なバージョンを持っているので、そのレベルの制御に行く必要がある場合は、少なくともフレームワークが既に存在します。そのための場所にあります。

4

1 に答える 1

0

これはこれとほとんど同じように見えます。AndroidViewを移動し、onDrawが何度も呼び出されないようにします。ただし、セクションを描画するだけの場合は、「再描画」される領域を定義するinvalidate(rect)rectがどこにあるか を呼び出してみてください。Rectそれ以外はできません。

于 2012-05-17T18:54:32.187 に答える