[关闭]
@natsumi 2016-08-16T07:18:54.000000Z 字数 1156 阅读 3355

【转】Android界面刷新—— invalidate与postInvalidate

Android


转自:
http://blog.csdn.net/a2012s/article/details/21156125

Android的invalidate与postInvalidate都是用来刷新界面的。
在UI主线程中,用invalidate(),本质是调用View的onDraw()绘制。
主线程之外,用postInvalidate()

  1. // 在onCreate()中开启线程
  2. new Thread(new GameThread()).start();
  3. // 实例化一个handler
  4. Handler myHandler = new Handler() {
  5.   // 接收到消息后处理
  6.   public void handleMessage(Message msg) {
  7.     switch (msg.what) {
  8.       case Activity01.REFRESH:
  9.         mGameView.invalidate(); // 刷新界面
  10.         break;
  11.     }
  12.     super.handleMessage(msg);
  13.   }
  14. };
  1. class GameThread implements Runnable {
  2.   public void run() {
  3.     while (!Thread.currentThread().isInterrupted()) {
  4.       Message message = new Message();
  5.       message.what = Activity01.REFRESH;
  6.       // 发送消息
  7.       Activity01.this.myHandler.sendMessage(message);
  8.       try {
  9.         Thread.sleep(100);
  10.       } catch (InterruptedException e) {
  11.         Thread.currentThread().interrupt();
  12.       }
  13.     }
  14.   }
  15. }

  1. class GameThread implements Runnable {
  2.   public void run() {
  3.     while (!Thread.currentThread().isInterrupted()) {
  4.       try {
  5.         Thread.sleep(100);
  6.       } catch (InterruptedException e) {
  7.         Thread.currentThread().interrupt();
  8.       }
  9.       // 使用postInvalidate可以直接在线程中更新界面
  10.       mGameView.postInvalidate();
  11.     }
  12.   }
  13. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注