Android界面刷新的方法分享

2016-02-19 09:44 4 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);

              }                  

       };

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

       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)

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

                            {

                                   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)

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

                            {

                                   Thread.currentThread().interrupt();

                            }

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

                            mGameView.postInvalidate();

                     }

              }

       }

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

延伸阅读
标签: 网络游戏
《契约OL》日常钻石刷新时间分享 很多人只会报怨这次没得钻,那次又没得钻,却不看做任务时间,不会总结。我也是前几天没事就用小号测试了下,得出结论大概如下: 一:每天日常的钻石大概刷新八次,刷新时间为偶数点数。 二:日常钻石刷新时间间隔为两小时。 三:每次钻石上限一般为半小时左右。 四:晚上十二点为最后次刷新,半夜是不刷新...
标签: 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...
刚开始接触UI的时候,碰到的最多的就是尺寸问题,什么画布要建多大,文字该用多大才合适,我要做几套界面才可以?什么七七八八的也着实让人有些头疼。 废话不多说,希望大家耐心看完后,不要再纠结于尺寸相关的东西了。 一、尺寸及分辨率 iPhone界面尺寸:320*480、640*960、640*1136 iPad界面尺寸:1024*768、2048*1536 单位:像素72dp...
标签: 电脑入门
自面世以来就受到各界热捧的Android,被誉为下一代无线设备系统的标杆。“天生的互联网基因”使人们对过去在线生活的移植到手机乃至更多的领域充满期待。 从互联网到移动互联网,继iphoneQQ和蓄势待发的ipadQQ之后,腾讯“精彩在线生活”的版图这一次选择了Android。依然兵贵神速的腾讯,从上个版本的web形式到这次发布的client形式仅...
主要目的是按后退键的时候,让程序能够退出。 实现起来的思路: 1.捕获到后退键事件就触发。 代码如下: @Override  public boolean onKeyDown(int keyCode, KeyEvent event)  {     //按下的如果是BACK,同时没有重复      if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatC...

经验教程

152

收藏

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