Android界面刷新的方法分享

2016-02-19 09:44 10 1 收藏

下面图老师小编跟大家分享一个简单易学的Android界面刷新的方法分享教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!

【 tulaoshi.com - 编程语言 】

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);

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

                            }

                            catch (InterruptedException e)

                            {

                                   Thread.currentThread().interrupt();

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

                            }

                     }

              }

       }

使用postInvalidate()刷新界面
使用postInvalidate则比较简单,不需要handler,直接在线程中调用postInvalidate即可。

代码如下:

 class GameThread implements Runnable

       {

              public void run()

              {

                     while (!Thread.currentThread().isInterrupted())

                     {

                            try

                            {

                                   Thread.sleep(100);

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

                            }

                            catch (InterruptedException e)

                            {

                                   Thread.currentThread().interrupt();

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

                            }

                            //使用postInvalidate可以直接在线程中更新界面

                            mGameView.postInvalidate();

                     }

              }

       }

来源:http://www.tulaoshi.com/n/20160219/1591956.html

延伸阅读
标签: Web开发
iframe src="1.htm" name="ifrmname" id="ifrmid"/iframe 方案一:用iframe的name属性定位 input type="button" name="Button" value="Button"onclick="document.frames('ifrmname').location.reload()" 或 input type="button" name=&quo...
标签: 网络游戏
《契约OL》日常钻石刷新时间分享 很多人只会报怨这次没得钻,那次又没得钻,却不看做任务时间,不会总结。我也是前几天没事就用小号测试了下,得出结论大概如下: 一:每天日常的钻石大概刷新八次,刷新时间为偶数点数。 二:日常钻石刷新时间间隔为两小时。 三:每次钻石上限一般为半小时左右。 四:晚上十二点为最后次刷新,半夜是不刷新...
刚开始接触UI的时候,碰到的最多的就是尺寸问题,什么画布要建多大,文字该用多大才合适,我要做几套界面才可以?什么七七八八的也着实让人有些头疼。 废话不多说,希望大家耐心看完后,不要再纠结于尺寸相关的东西了。 一、尺寸及分辨率 iPhone界面尺寸:320*480、640*960、640*1136 iPad界面尺寸:1024*768、2048*1536 单位:像素72dp...
当前比较成熟一点的应用基本上都会在进入应用之显示一个启动界面. 这个启动界面或简单,或复杂,或简陋,或华丽,用意不同,风格也不同. 下面来观摩几个流行的应用的启动界面. 1. 货比三家 以腾讯qq,新浪weibo,UC浏览器,游戏神庙逃亡等7个应用为例,比比看: (我认为最精美的界面应该是qq2012,虽然只有一张图,基本的应用名称,版本,图标这些信息都...
标签: 电脑入门
自面世以来就受到各界热捧的Android,被誉为下一代无线设备系统的标杆。“天生的互联网基因”使人们对过去在线生活的移植到手机乃至更多的领域充满期待。 从互联网到移动互联网,继iphoneQQ和蓄势待发的ipadQQ之后,腾讯“精彩在线生活”的版图这一次选择了Android。依然兵贵神速的腾讯,从上个版本的web形式到这次发布的client形式仅...

经验教程

317

收藏

72
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部