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程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。 利用Handler刷新界面 实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面...
Android 界面刷新方法分享 Android 界面刷新是 Android 开发中非常重要的一部分,界面的刷新可以保证用户界面的实时更新和交互性。在 Android 中,界面的刷新可以通过多种方式实现,本文将分享两种常见的 Android ...
本文将深入探讨“android界面刷新count”这一主题,主要关注如何有效地更新Android应用程序的用户界面。 首先,我们需要理解Android界面的运行机制。Android采用事件驱动的单线程模型,即主线程(UI线程)负责处理...
Android界面动态刷新主要依赖于View和ViewGroup类的生命周期方法,以及一些特定的UI更新工具。以下是一些核心知识点: 1. `invalidate()`: 这是Android中用于触发视图重新绘制的关键方法。当你改变了一个View的状态...
"Android Ultra ptr 下拉刷新 仿QQ聊天界面的下拉刷新"是一个特殊的实现,它模仿了QQ聊天应用中的下拉刷新效果,特别是那个旋转的小圆圈动画。这种效果为用户提供了直观的反馈,表明数据正在加载中。 首先,我们来...
在Android应用开发中,UI界面的时间刷新是一个常见的需求,特别是在显示实时信息如系统时间、倒计时或计时器等场景。本篇文章将深入探讨如何使用Handler机制来实现在Android UI界面上对系统时间的实时更新。 ...
本文将详细介绍两种在Android中在线程中刷新界面的方法:Handler和postInvalidate()。 1. 利用Handler刷新界面 Handler是Android中用于线程间通信的重要工具,它允许你在后台线程发送消息到主线程,并在主线程中...
下面将详细介绍如何在Android界面中实现下拉刷新功能。 1. **SwipeRefreshLayout组件** Android SDK提供了一个名为`SwipeRefreshLayout`的布局容器,它是实现下拉刷新的核心组件。这个组件可以包含一个可滚动的...
在Android应用开发中,...总的来说,Android应用中的界面刷新动画是一种强大的工具,能够增强用户对应用的感知和互动。通过巧妙的设计和实现,开发者可以创建出既实用又有趣的刷新体验,从而提高用户满意度和留存率。
另一方面,`SwipeRefreshLayout`提供了一种下拉刷新的界面效果,通常用于列表视图,当用户上滑时显示刷新进度条。 在实现滑动效果时,还要考虑触摸事件的拦截和分发。`ViewGroup`的`onInterceptTouchEvent()`方法...
这个"Android listView下拉刷新上拉刷新带阻尼效果"的源码Demo是几年前的一个示例,旨在帮助学生理解和实现Android应用中的下拉刷新和上拉加载更多功能,同时加入了阻尼效果,提升用户体验。阻尼效果是指在用户滑动...
这个开源项目可能就是其中之一,它提供了在Eclipse中集成下拉刷新功能的方法。这为那些仍在使用Eclipse作为开发工具的开发者提供了便利,因为许多现代开源库主要面向Android Studio。 三、PullToRefreshViewPager `...
在Android应用开发中,下拉刷新(Pull-to-Refresh)是一种常见的交互模式,它允许用户通过下拉列表或视图来加载更多数据或更新现有内容。这个“Android下拉刷新开源库集锦”是一个资源宝库,包含了多个用于实现这一...
首先,下拉刷新是一种常见的用户界面设计模式,当用户滚动到页面顶部并继续向下拉动时,它会显示一个刷新指示器,然后执行数据的更新操作。这种设计通常用于显示动态内容,如新闻、邮件或者社交媒体的最新信息。 ...
在安卓(Android)应用开发中,用户界面的交互体验至关重要,而刷新按钮的动画效果是提升用户体验的一个关键因素。在本教程中,我们将探讨如何在Android工具栏中实现一个点击后由单箭头变为旋转圆圈的刷新按钮动画...
在Android开发中,异步刷新UI是至关重要的,它能够保证用户界面的流畅性,避免因为长时间阻塞主线程导致的ANR(Application Not Responding)错误。本篇将详细介绍Asynctask、Handler+Thread以及TimerTask这三种常见...
在Android 5.0(Lollipop)中,Google引入了一个新的UI组件——SwipeRefreshLayout,用于实现下拉刷新的功能。这个组件的设计目标是提供一个统一的、易于使用的接口,让用户能够通过简单的滑动手势来更新应用内容,...
"Android自定义刷新控件"这个主题主要关注如何扩展谷歌提供的SwipeRefreshLayout,以实现上拉加载更多的功能。SwipeRefreshLayout通常用于下拉刷新,它是一个包含一个子视图的布局,当用户向下滑动时,可以触发刷新...
总之,要创建“Android界面云标签效果”,我们需要掌握Android的动画系统、布局管理、数据结构和事件监听等技术,并可能需要进行一定的自定义视图开发。同时,合理利用第三方库和优化性能也是提升用户体验的重要环节...