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();
}
}
}
转自:
作者:Feisky
出处:http://www.cnblogs.com/feisky/
分享到:
相关推荐
Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。 Android程序中可以使用的界面...
Android 界面刷新方法分享 Android 界面刷新是 Android 开发中非常重要的一部分,界面的刷新可以保证用户界面的实时更新和交互性。在 Android 中,界面的刷新可以通过多种方式实现,本文将分享两种常见的 Android ...
本文将深入探讨“android界面刷新count”这一主题,主要关注如何有效地更新Android应用程序的用户界面。 首先,我们需要理解Android界面的运行机制。Android采用事件驱动的单线程模型,即主线程(UI线程)负责处理...
Android界面动态刷新主要依赖于View和ViewGroup类的生命周期方法,以及一些特定的UI更新工具。以下是一些核心知识点: 1. `invalidate()`: 这是Android中用于触发视图重新绘制的关键方法。当你改变了一个View的状态...
在安卓(Android)应用开发中,用户界面的交互体验至关重要,而刷新按钮的动画效果是提升用户体验的一个关键因素。在本教程中,我们将探讨如何在Android工具栏中实现一个点击后由单箭头变为旋转圆圈的刷新按钮动画...
"Android Ultra ptr 下拉刷新 仿QQ聊天界面的下拉刷新"是一个特殊的实现,它模仿了QQ聊天应用中的下拉刷新效果,特别是那个旋转的小圆圈动画。这种效果为用户提供了直观的反馈,表明数据正在加载中。 首先,我们来...
3. **Android界面布局**:布局定义了界面元素的位置和关系。常见的布局包括线性布局(LinearLayout)、相对布局(RelativeLayout)等。布局通常使用XML文件描述,这有助于将界面设计与业务逻辑分离,方便维护。 4. ...
在Android应用开发中,...总的来说,Android应用中的界面刷新动画是一种强大的工具,能够增强用户对应用的感知和互动。通过巧妙的设计和实现,开发者可以创建出既实用又有趣的刷新体验,从而提高用户满意度和留存率。
在Android应用开发中,UI界面的时间刷新是一个常见的需求,特别是在显示实时信息如系统时间、倒计时或计时器等场景。本篇文章将深入探讨如何使用Handler机制来实现在Android UI界面上对系统时间的实时更新。 ...
本资源包“Android开发+下拉刷新功能+快速实现教程+应用开发技巧:Android教你如何一分钟实现下拉刷新功能项目完整实例代码”提供了一种快速集成下拉刷新功能到Android应用中的方法。该资源详细展示了通过简洁的实例...
下面将详细介绍如何在Android界面中实现下拉刷新功能。 1. **SwipeRefreshLayout组件** Android SDK提供了一个名为`SwipeRefreshLayout`的布局容器,它是实现下拉刷新的核心组件。这个组件可以包含一个可滚动的...
本文将详细介绍两种在Android中在线程中刷新界面的方法:Handler和postInvalidate()。 1. 利用Handler刷新界面 Handler是Android中用于线程间通信的重要工具,它允许你在后台线程发送消息到主线程,并在主线程中...
在Android 5.0(Lollipop)中,Google引入了一个新的UI组件——SwipeRefreshLayout,用于实现下拉刷新的功能。这个组件的设计目标是提供一个统一的、易于使用的接口,让用户能够通过简单的滑动手势来更新应用内容,...
在Android应用开发中,下拉刷新(Pull-to-Refresh)是一种常见的交互模式,它允许用户通过下拉列表或视图来加载更多数据或更新现有内容。这个“Android下拉刷新开源库集锦”是一个资源宝库,包含了多个用于实现这一...
1. **什么是下拉刷新**:下拉刷新(Pull-to-Refresh)是一种用户界面设计模式,允许用户通过在列表顶部向下拉动来刷新列表内容。这种设计常见于新闻、社交网络等应用,用来获取最新的信息或数据。 2. **实现原理**...
在Android开发领域,高仿淘宝界面是一个常见的学习项目,它能帮助开发者深入理解用户界面设计以及自定义组件的实现。本项目"android高仿淘宝界面"聚焦于使用RecyclerView来构建复杂的商品列表,同时涉及到自定义属性...
首先,下拉刷新是一种常见的用户界面设计模式,当用户滚动到页面顶部并继续向下拉动时,它会显示一个刷新指示器,然后执行数据的更新操作。这种设计通常用于显示动态内容,如新闻、邮件或者社交媒体的最新信息。 ...
这个"Android listView下拉刷新上拉刷新带阻尼效果"的源码Demo是几年前的一个示例,旨在帮助学生理解和实现Android应用中的下拉刷新和上拉加载更多功能,同时加入了阻尼效果,提升用户体验。阻尼效果是指在用户滑动...
另一方面,`SwipeRefreshLayout`提供了一种下拉刷新的界面效果,通常用于列表视图,当用户上滑时显示刷新进度条。 在实现滑动效果时,还要考虑触摸事件的拦截和分发。`ViewGroup`的`onInterceptTouchEvent()`方法...