Android的invalidate与postInvalidate都是用来刷新界面的,用法区别在于:

  1) invalidate():实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。

// 在onCreate()中开启线程new Thread(new GameThread()).start();// 实例化一个handlerHandler 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 还有一种是自定义的LinearLayout,需要传很多参数,在初始化的使用已经传过初始显示值,中间可能还需要各种变化,此时对该自定义布局写一个接口进行监听变化。

更多相关文章

  1. Android子线程不可以刷新UI么?
  2. Android(安卓)实现截图功能
  3. Android(安卓)ANR介绍及分析ANR log信息的方法
  4. android开发基础学习―按钮事件
  5. Android:Handler学习总结
  6. android显示意图激活另一个Activity
  7. 【Android】Intent传递数据量过大的问题android.os.TransactionT
  8. Android面试复习资料整理
  9. 关于ANDROID下载与音乐播放

随机推荐

  1. Android:Android(安卓)SDK Manager
  2. android 自带的主题 theme 的使用
  3. Android(安卓)Scroll 分析
  4. Android--应用开发3(Android(安卓)layout
  5. Android(安卓)属性文件build.prop,获取属
  6. Android布局属性解析
  7. android键盘弹出之后界面整体上移,顶出去
  8. LinearLayout中gravity和layout_gravity
  9. 搭建Android(安卓)+ Eclipse环境时遇到的
  10. 系出名门Android(9) - 数据库支持(SQLite