4

私の SurfaceView の onDraw メソッド draw は、画面上の TouchEvents によって決定されるパスの LinkedList です。LinkedList から最後のパス ノードを削除する元に戻す機能を追加したいと考えています。ボタンを押すと、パスはリストから削除されますが、元に戻すボタンをもう一度押すか画面に触れるまで、SurfaceView は更新されません。

ありがとう、エリック

4

2 に答える 2

3

OnDraw はスレッドで 60 ミリ秒ごとに呼び出されますが、そこで更新されないため混乱します。

あなたが使用する必要があります:

postInvalidate();

いいえ

invalidate();

postInvalidate();次に都合のよいときに再描画するようにメイン UI スレッドに指示します。あなたがやっている方法は、別のスレッドでは機能しません。

于 2012-05-31T11:02:21.580 に答える
0

これは、ビューが onDraw() が呼び出されたときにのみ更新されるためです。これは、画面のアクティビティ (タッチなど) が原因で発生するか、プログラムで強制されたときに発生します。

強制したい場合: View から継承された invalidate() メソッドを使用します。

削除が SurfaceView 内で発生した場合は、削除が完了した後に invalidate() を記述してください。外部で発生した場合は、surfaceViewInstance.invalidate() を実行してください。

お役に立てれば

于 2011-06-21T19:52:03.613 に答える