Android界面刷新的方法分享

 更新时间:2013年05月26日 12:14:35   作者:  
Android界面刷新的方法分享,需要的朋友可以参考一下

Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。

Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。

利用Handler刷新界面
实例化一个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();

                            }

                     }

              }

       }


使用postInvalidate()刷新界面
使用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();

                     }

              }

       }

相关文章

  • Android新建Activity的方法

    Android新建Activity的方法

    这篇文章主要介绍了Android新建Activity的方法,结合实例形式分析了Android新建Activity的具体步骤与相关实现技巧,需要的朋友可以参考下
    2016-04-04
  • Android唤醒、解锁屏幕代码实例

    Android唤醒、解锁屏幕代码实例

    这篇文章主要介绍了Android唤醒、解锁屏幕代码实例,本文讲解了唤醒、解锁屏幕需要的权限和操作代码实例,代码中包含详细注释,需要的朋友可以参考下
    2015-05-05
  • Android学习笔记(二)之电话拨号器

    Android学习笔记(二)之电话拨号器

    目前手机市场上android已经具有强大的霸主地位,吸引了很多的追棒者,android学习越来越火热,本文给大家介绍android学习笔记(二)之电话拨号器,感兴趣的朋友一起学习吧
    2015-11-11
  • Android设置全屏代码分享

    Android设置全屏代码分享

    本文是安卓代码分享的第一篇,给大家分享了一段简单的设置安卓全屏的代码,后续还会为大家分享一些。
    2014-10-10
  • Android实现第三方授权登录、分享以及获取用户资料

    Android实现第三方授权登录、分享以及获取用户资料

    本篇文章介绍了Android实现第三方授权登录、分享以及获取用户资料,详细的介绍了第三方授权登录的实现代码,有需要的朋友可以了解一下。
    2016-11-11
  • Android悬浮窗按钮实现点击并显示/隐藏多功能列表

    Android悬浮窗按钮实现点击并显示/隐藏多功能列表

    这篇文章主要为大家详细介绍了Android悬浮窗按钮实现点击并显示/隐藏多功能列表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Android使用Handler实现打地鼠游戏

    Android使用Handler实现打地鼠游戏

    这篇文章主要为大家详细介绍了Android使用Handler实现打地鼠游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Android超详细讲解弹出多选框的实现

    Android超详细讲解弹出多选框的实现

    这篇文章主要介绍了在Android开发中如何实现弹出多选框的功能,多选框是很常见的操作控件,感兴趣的朋友都来一起看看吧
    2022-03-03
  • 分享Android中Toast的自定义使用

    分享Android中Toast的自定义使用

    Android中的Toast是一种简易的消息提示框,toast提示框不能被用户点击,toast会根据用户设置的显示时间后自动消失。本文将介绍Toast的自定义使用,下面一起来看看吧。
    2016-08-08
  • Android中绝对音量和相对音量设置

    Android中绝对音量和相对音量设置

    大家好,本篇文章主要讲的是Android中绝对音量和相对音量设置,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01

最新评论