Android画面の更新
1577 ワード
AndroidのinvalidateとpostInvalidateはいずれもインタフェースをリフレッシュするためのもので、使い方の違いは以下の通りです.
1)invalidate():Handlerオブジェクトをインスタンス化し、handleMessageメソッドを書き換えてinvalidate()を呼び出してインタフェースのリフレッシュを実現する.一方,スレッドではsendMessageを介してインタフェース更新メッセージを送信する.
2)postInvalidateを使用すると比較的簡単でhandlerを必要とせず,直接スレッドでpostInvalidateを呼び出せばよい.
3もう1つはカスタマイズされたLinearLayoutで、多くのパラメータを転送する必要があります.初期化の使用で初期表示値が転送され、中間に様々な変更が必要になる可能性があります.このとき、このカスタマイズされたレイアウトにインタフェースを書いてリスニングします.
1)invalidate():Handlerオブジェクトをインスタンス化し、handleMessageメソッドを書き換えてinvalidate()を呼び出してインタフェースのリフレッシュを実現する.一方,スレッドではsendMessageを介してインタフェース更新メッセージを送信する.
// onCreate()
new Thread(new GameThread()).start();
// handler
Handler myHandler = new Handler() {
//
public void handleMessage(Message msg) {
switch (msg.what) {
case Activity01.REFRESH:
mGameView.invalidate(); //
break;
}
super.handleMessage(msg);
}
};
class GameThread implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
Message message = new Message();
message.what = Activity01.REFRESH;
//
Activity01.this.myHandler.sendMessage(message);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
2)postInvalidateを使用すると比較的簡単でhandlerを必要とせず,直接スレッドでpostInvalidateを呼び出せばよい.
class GameThread implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
// postInvalidate
mGameView.postInvalidate();
}
}
}
3もう1つはカスタマイズされたLinearLayoutで、多くのパラメータを転送する必要があります.初期化の使用で初期表示値が転送され、中間に様々な変更が必要になる可能性があります.このとき、このカスタマイズされたレイアウトにインタフェースを書いてリスニングします.