`
wen742538485
  • 浏览: 237594 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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应用开发揭秘

Android文档

分享到:
评论

相关推荐

    Android 实现界面刷新的几种方法

    Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。 利用Handler刷新界面 实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面...

    Android界面刷新的方法分享

    Android 界面刷新方法分享 Android 界面刷新是 Android 开发中非常重要的一部分,界面的刷新可以保证用户界面的实时更新和交互性。在 Android 中,界面的刷新可以通过多种方式实现,本文将分享两种常见的 Android ...

    android 界面刷新count

    本文将深入探讨“android界面刷新count”这一主题,主要关注如何有效地更新Android应用程序的用户界面。 首先,我们需要理解Android界面的运行机制。Android采用事件驱动的单线程模型,即主线程(UI线程)负责处理...

    android动态刷新界面

    Android界面动态刷新主要依赖于View和ViewGroup类的生命周期方法,以及一些特定的UI更新工具。以下是一些核心知识点: 1. `invalidate()`: 这是Android中用于触发视图重新绘制的关键方法。当你改变了一个View的状态...

    Android Ultra ptr 下拉刷新 仿QQ聊天界面的下拉刷新

    "Android Ultra ptr 下拉刷新 仿QQ聊天界面的下拉刷新"是一个特殊的实现,它模仿了QQ聊天应用中的下拉刷新效果,特别是那个旋转的小圆圈动画。这种效果为用户提供了直观的反馈,表明数据正在加载中。 首先,我们来...

    android ui界面时间刷新

    在Android应用开发中,UI界面的时间刷新是一个常见的需求,特别是在显示实时信息如系统时间、倒计时或计时器等场景。本篇文章将深入探讨如何使用Handler机制来实现在Android UI界面上对系统时间的实时更新。 ...

    Android中刷新界面的二种方法

    本文将详细介绍两种在Android中在线程中刷新界面的方法:Handler和postInvalidate()。 1. 利用Handler刷新界面 Handler是Android中用于线程间通信的重要工具,它允许你在后台线程发送消息到主线程,并在主线程中...

    android界面下拉刷新代码

    下面将详细介绍如何在Android界面中实现下拉刷新功能。 1. **SwipeRefreshLayout组件** Android SDK提供了一个名为`SwipeRefreshLayout`的布局容器,它是实现下拉刷新的核心组件。这个组件可以包含一个可滚动的...

    Android炫酷界面刷新

    在Android应用开发中,...总的来说,Android应用中的界面刷新动画是一种强大的工具,能够增强用户对应用的感知和互动。通过巧妙的设计和实现,开发者可以创建出既实用又有趣的刷新体验,从而提高用户满意度和留存率。

    Android 界面滑动效果

    另一方面,`SwipeRefreshLayout`提供了一种下拉刷新的界面效果,通常用于列表视图,当用户上滑时显示刷新进度条。 在实现滑动效果时,还要考虑触摸事件的拦截和分发。`ViewGroup`的`onInterceptTouchEvent()`方法...

    Android listView下拉刷新上拉刷新带阻尼效果-IT计算机-毕业设计.zip

    这个"Android listView下拉刷新上拉刷新带阻尼效果"的源码Demo是几年前的一个示例,旨在帮助学生理解和实现Android应用中的下拉刷新和上拉加载更多功能,同时加入了阻尼效果,提升用户体验。阻尼效果是指在用户滑动...

    Android 开源的下拉刷新 Eclipse版本

    这个开源项目可能就是其中之一,它提供了在Eclipse中集成下拉刷新功能的方法。这为那些仍在使用Eclipse作为开发工具的开发者提供了便利,因为许多现代开源库主要面向Android Studio。 三、PullToRefreshViewPager `...

    Android下拉刷新开源库集锦

    在Android应用开发中,下拉刷新(Pull-to-Refresh)是一种常见的交互模式,它允许用户通过下拉列表或视图来加载更多数据或更新现有内容。这个“Android下拉刷新开源库集锦”是一个资源宝库,包含了多个用于实现这一...

    Android 之WebView实现下拉刷新和其他相关刷新功能

    首先,下拉刷新是一种常见的用户界面设计模式,当用户滚动到页面顶部并继续向下拉动时,它会显示一个刷新指示器,然后执行数据的更新操作。这种设计通常用于显示动态内容,如新闻、邮件或者社交媒体的最新信息。 ...

    安卓Android工具栏刷新按钮的动画旋转效果实现

    在安卓(Android)应用开发中,用户界面的交互体验至关重要,而刷新按钮的动画效果是提升用户体验的一个关键因素。在本教程中,我们将探讨如何在Android工具栏中实现一个点击后由单箭头变为旋转圆圈的刷新按钮动画...

    Android异步刷新UI多种实现方案

    在Android开发中,异步刷新UI是至关重要的,它能够保证用户界面的流畅性,避免因为长时间阻塞主线程导致的ANR(Application Not Responding)错误。本篇将详细介绍Asynctask、Handler+Thread以及TimerTask这三种常见...

    android5.0下拉刷新

    在Android 5.0(Lollipop)中,Google引入了一个新的UI组件——SwipeRefreshLayout,用于实现下拉刷新的功能。这个组件的设计目标是提供一个统一的、易于使用的接口,让用户能够通过简单的滑动手势来更新应用内容,...

    Android自定义刷新控件

    "Android自定义刷新控件"这个主题主要关注如何扩展谷歌提供的SwipeRefreshLayout,以实现上拉加载更多的功能。SwipeRefreshLayout通常用于下拉刷新,它是一个包含一个子视图的布局,当用户向下滑动时,可以触发刷新...

    Android界面云标签效果

    总之,要创建“Android界面云标签效果”,我们需要掌握Android的动画系统、布局管理、数据结构和事件监听等技术,并可能需要进行一定的自定义视图开发。同时,合理利用第三方库和优化性能也是提升用户体验的重要环节...

Global site tag (gtag.js) - Google Analytics