2011-01-05 9 views
15

私はプログラミングアンドロイドには新しいですが、私はかなりの経験のブラックベリーを持っています。スレッドのアンドロイドアプリ内でinvalidate()

アクティビティクラス(main.java)とビュークラス(game.java)を持つアプリケーションを作成しました。

ビュークラス内には、いくつかのビットマップが画面に描画されています。私はスレッドを作成し、スレッド内でイメージを動かしています。しかし、スレッド内でinvalidate()を呼び出すと、決して画面が再描画されません。

スレッドから画面を無効にできませんか?スレッドが実行されており、無効化が呼び出されていることがわかっています。画面上で変更を行うことはありません。

答えて

26

UI以外のスレッドから呼び出す場合は、View.postInvalidate()を使用する必要があります。ドキュメントによると :

ます。public void postInvalidate() 以降:イベントループを介して次のサイクルで発生する無効原因APIレベル1

。これを使用して、非UIスレッドからのビューを無効にします。

+0

あまりにも簡単でした...私はそれを行う方法について過去30分間探していましたが、postInvalidate()を一度見つけたことはありませんでした。 – Dave

+1

ええ、いくつかの関数は、それらを検索するときにドキュメントから消滅するという悪い習慣を持っています;) – maid450

関連する問題