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

android 笔记 --- 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自学笔记-13-ContentObserver内容观察者

    综上所述,ContentObserver是Android中一种有效的数据变更监听机制,它可以帮助开发者实时响应数据变化,实现更高效的用户界面同步。熟练掌握ContentObserver的使用,可以提升应用的响应性和用户体验。通过阅读提供...

    Android笔记本APP源码.zip

    3. **Android笔记应用的基本结构** - **MainActivity**: 应用的主要入口,通常负责初始化界面和处理用户交互。 - **NoteActivity/EditorActivity**: 用于创建和编辑笔记的活动,可能包括输入框、编辑器和保存功能...

    Android代码-饭否客户端源码.zip

    4. **UI设计与布局**:Android的布局文件XML是构建用户界面的核心。源码中的layout文件展示了如何使用LinearLayout、RelativeLayout、ConstraintLayout等组件创建复杂的布局,以及如何使用自定义View增强UI表现力。...

    Android-Jetpack笔记-DataBinding

    通常在开发界面时,总有findViewById的重复工作,DataBinding可以免去这些操作。同时,DataBinding还可以直接在xml中绑定数据,免去类似setText的操作,让数据来驱动UI刷新。 Jetpack笔记代码 使用 在app/build....

    Android笔记

    【Android笔记】是一份全面的学习资源,旨在帮助初学者掌握Android应用开发的核心概念和技术。这份资料涵盖了许多关键领域,从基础到进阶,为开发者提供了一个系统性的学习路径。 首先,【Android介绍】部分通常会...

    画板android-palette-master.zip

    在Android开发中,有时我们需要为用户提供一种自由绘画的界面,比如涂鸦应用或者手写笔记应用,这时就需要用到自定义画板的功能。"画板android-palette-master.zip"就是一个针对这种需求的开源项目,它提供了丰富的...

    Android学习笔记 Preference的使用

    这篇名为“Android学习笔记 - Preference的使用”的博客文章可能涵盖了以下关键知识点: 1. **Preference基础知识**: - `Preference` 类是Android中的一个抽象类,它是所有设置项的基础。`CheckBoxPreference`、`...

    android 整理代码笔记

    这篇笔记主要涵盖了多个Android开发的实践模块,包括数据存储、用户界面、网络通信等基础且重要的主题。以下是对这些主题的详细解析: 1. **Fuxi**: 可能是指一个项目的基础框架或者组件,Fuxi在汉语中没有特定的...

    Android应用开发_学习笔记.doc

    【Android应用开发学习笔记】 Android应用开发是移动设备软件开发的重要组成部分,主要涉及四大组件、UI设计以及系统交互。本文将深入探讨这些关键知识点。 **一、Android四大组件** 1. **Activity(活动)** - ...

    Android学习笔记(二四):多页显示SlidingDrawer的使用.doc

    在本篇Android学习笔记中,我们将探讨如何使用SlidingDrawer实现多页显示,并理解其工作原理和相关属性。 首先,SlidingDrawer通常用于在主界面下方或上方滑出额外的内容,例如菜单、设置或附加信息。它有两个主要...

    Android App_云随笔课程设计

    1. **用户界面(UI)设计**:设计一个直观、易用的UI至关重要,以便用户能快速记录笔记。这可能包括文本输入框、日期选择器、标题栏以及用于分类和标签的选项。 2. **数据存储与同步**:Android提供SQLite数据库来...

    Android课程实验-线性布局实验-限制布局实验-表格布局实验-自制的浏览器.zip

    此外,还可能涉及到前进、后退、刷新、书签等功能的实现,这需要对Android的Intent和Activity生命周期有深入理解。 2. **layoutTest3, layoutTest2**:这些文件夹代表了Android中的布局测试实验。线性布局...

    android studio 高级UI界面学习笔记(第一版)持续更新.md

    滑动菜单 下拉刷新 ExpandableListView适配器配置及使用

    Android 局域网简易云端笔记系统源码.rar

    4. **UI设计与交互**:Android Studio中的XML布局文件会被用来创建用户界面,包括笔记的创建、编辑、查看等功能。开发者可能会用到RecyclerView或者ListView来展示笔记列表,并实现滑动刷新、下拉加载等交互效果。 ...

    基于Android的个人信息管理系统

    开发这样一个系统需要掌握Android平台的各种核心技术,包括数据存储、用户界面设计、网络同步以及安全策略等。通过不断优化和迭代,我们可以构建出更加智能、便捷且安全的个人信息管理解决方案。

    android笔记

    ### Android 应用界面设计与操作 #### 1. 设置标题栏的颜色与字体大小 在Android应用开发中,有时我们需要对应用内的标题栏进行自定义,例如改变其颜色或字体大小等。下面是如何实现这一功能的具体步骤: ```java /...

    android 入门笔记

    Android入门笔记 1. 开发环境配置 在开始Android开发之前,首先需要配置好开发环境。Eclipse是一款经典的集成开发环境(IDE),适用于Android开发。你可以从以下地址下载Eclipse: - Eclipse下载地址:此处应填写...

    Android笔记之:onConfigurationChanged详解

    在Android开发中,`onConfigurationChanged` 是一个关键的生命周期方法,它涉及到应用程序对设备配置变化的响应。本文将深入探讨 `onConfigurationChanged` 的详细用法及其在Android应用程序中的重要性。 首先,`...

    android笔画回放

    每次在Canvas上绘制新的点,然后刷新界面,模拟出连续的书写过程。这样,用户就可以看到之前记录的笔画按顺序回放。 在提供的"FontDemo"项目中,可能包含了有关如何在Android应用中使用自定义字体的示例。这与笔画...

Global site tag (gtag.js) - Google Analytics