Android界面刷新的方法分享

御风的女孩io

御风的女孩io

2016-02-19 09:44

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

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;

                     }

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

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

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

                            }

                            catch (InterruptedException e)

                            {

                                   Thread.currentThread().interrupt();

                            }

                     }

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

              }

       }

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

代码如下:

 class GameThread implements Runnable

       {

              public void run()

              {

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

                     {

                            try

                            {

                                   Thread.sleep(100);

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

                            }

                            catch (InterruptedException e)

                            {

                                   Thread.currentThread().interrupt();

                            }

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

                            mGameView.postInvalidate();

                     }

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

              }

       }

展开更多 50%)
分享

猜你喜欢

Android界面刷新的方法分享

编程语言 网络编程
Android界面刷新的方法分享

Android界面设计

编程语言 网络编程
Android界面设计

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Android下拉刷新ListView——RTPullListView(demo)

编程语言 网络编程
Android下拉刷新ListView——RTPullListView(demo)

android ListView的右边滚动滑块启用方法 分享

编程语言 网络编程
android ListView的右边滚动滑块启用方法 分享

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Android界面 NotificationManager使用Bitmap做图标

编程语言 网络编程
Android界面 NotificationManager使用Bitmap做图标

android下拉刷新ListView的介绍和实现代码

编程语言 网络编程
android下拉刷新ListView的介绍和实现代码

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Win10正式版怎么删除搜狗输入法中的SogouExe顽固文件?

Win10正式版怎么删除搜狗输入法中的SogouExe顽固文件?

SQL Server 2005安装过程中出现错误的解决办法

SQL Server 2005安装过程中出现错误的解决办法
下拉加载更多内容 ↓