1

Android ビューを部分的に無効にしようとしています。View.invalidate( l, t, b, r ) を使用すると、垂直方向 (上と下) の値が正しく無効化されているように見えますが、使用する左右の値に関係なく、ビュー全体が無効になります。

たとえば、私のビューは灰色です。緑色の領域を無効にしたいのですが、緑色と赤色の領域が無効になります。これは常に、ビューを完全に横切る水平方向全体に及びます。View.invalidate( 0, 0, 50, 50 ) などの小さな値を設定しようとしましたが、それでもこの動作が発生します。

画像リンク (画像を投稿するのに十分な担当者がいません)

なぜこうなった?

4

1 に答える 1

1

Honeycomb の後のデフォルトであるハードウェア アクセラレーションによって、動作が変更されました。invalidate()ダーティ リージョンを提供するビューの場合、クリップ バウンドは設定されません ( canvas.getClipBounds())。ただし、ダーティ リージョンと交差するオブジェクトのみが再描画されます。

レンダリング パイプラインの作成者である Romain Guy によるこの回答を参照してください。

于 2015-07-18T21:30:54.327 に答える