`

Handler与Message类,实现n秒后无操作自动消失功能

阅读更多
实现功能:某控件不操作10秒后,自动消失。如照相机变焦条出现后,无操作10秒自动隐藏。

所用知识:handler   message

//定义变量

private EffectInVisiableHandler mtimeHandler;
    private final int MOBILE_QUERY = 1;

//程序启动时,初始化并发送消息

mtimeHandler = new EffectInVisiableHandler();
Message msg = mtimeHandler.obtainMessage(MOBILE_QUERY);
mtimeHandler.sendMessageDelayed(msg, 10000);

//在某控件的onclick或ontouch事件中,重置message,即从新计时开始。

View.OnTouchListener touchCenterLayoutListener=new View.OnTouchListener() {            
            public boolean onTouch(View v, MotionEvent event) {    
                switch(event.getAction())
                {
                case MotionEvent.ACTION_DOWN:
                    resetTime();
                    break;
                case MotionEvent.ACTION_UP:
                    break;
                }
                return true;
            }
        };

private class EffectInVisiableHandler extends Handler
        {
            @Override
            public void handleMessage(Message msg)
            {
                switch(msg.what)
                {
                case MOBILE_QUERY:                   
                    midLayoutInVisable();                           //当10秒到达后,作相应的操作。
                    Log.i("","run**********************");
                    break;

                }
            }
        }

        public void resetTime() {
            mtimeHandler.removeMessages(MOBILE_QUERY);        
            Message msg = mtimeHandler.obtainMessage(MOBILE_QUERY);
            mtimeHandler.sendMessageDelayed(msg, 10000);            
        }


Android 启动画面 SplashScreen

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

public class SplashActivity extends Activity {

	private final int SPLASH_DISPLAY_LENGHT = 5000; //延迟五秒 
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.splash);
		new Handler().postDelayed(new Runnable() {
			// 为了减少代码使用匿名Handler创建一个延时的调用
			public void run() {
				Intent i = new Intent(SplashActivity.this, MainActivity.class);
				// 通过Intent打开最终真正的主界面Main这个Activity
				SplashActivity.this.startActivity(i); // 启动Main界面
				SplashActivity.this.finish(); // 关闭自己这个开场屏
			}
		}, SPLASH_DISPLAY_LENGHT);
	}
}
分享到:
评论

相关推荐

    Handler Looper MessageQueue 源码解析

    在Android系统中,Handler、Looper和MessageQueue是实现线程间通信的核心组件,它们共同构建了一个消息处理机制。本文将深入解析这三者的源码,帮助你理解它们的工作原理,并教你如何手写一套自己的Handler系统。 ...

    Thread,Looper,Handler,Message,MessageQueue,MessagePool之间的关系

    在Android系统中,线程(Thread)、Looper、Handler、Message以及MessageQueue和MessagePool是实现异步消息处理机制的关键组件,它们共同构建了一个高效的事件驱动模型。这些组件的关系紧密,协同工作,使得Android...

    Message,MessageQueue,Looper,Handler详解

    ### Message,MessageQueue,Looper,Handler详解 #### 一、几个关键概念 ##### 1、MessageQueue:消息队列 MessageQueue是一种数据结构,顾名思义,它充当了一个消息队列的角色,用来存放各种消息对象。每一个线程...

    Android中Handler与Message的简单实例

    Android中Handler与Message的简单实例 前言: 虽然笔者已经学习了Android的AsyncTask来实现一部消息的处理。但是在android的学习中,经常会在一些demo中看到Handler与Message的一些使用,所以Handler与Message的学习...

    android线程handler、message、looperDEMO

    `Handler`、`Message`和`Looper`是Android系统提供的一个关键机制,用于在不同的线程间进行通信,特别是主线程(UI线程)与工作线程间的交互。下面将详细解释这三个组件以及它们如何协同工作。 1. **Handler...

    Android Handler Looper Message 使用示例

    在主线程即UI线程外,新建一个Looper线程,并用Messenger和Handler来处理message和posted runnable。程序中,在负线程中默认加了一个3s的线程等来,来帮助理解sent message和post runnable之间的同步机制。所以在按...

    android多线程handler/message机制详解

    在上面的代码中,我们首先在 UI 线程中创建了一个 Handler,然后在后台线程中执行了一些操作,并将结果通过 Message 发送给 Handler,Handler 将其处理并将结果显示给用户。 Handler 和 Message 机制是 Android 多...

    Android handler message奇怪用法详解

    1. **静态内部类与Handler**:为避免内存泄漏,可以使用静态内部类来创建Handler实例,这样即使外部Activity或Fragment被销毁,Handler也不会持有它们的引用。 2. **弱引用与Handler**:使用WeakReference包裹...

    使用handler 实现预约时间功能

    在Android开发中,`Handler`类是一个至关重要的组件,它主要用于在不同的线程间通信,尤其是在处理异步任务和定时操作时。标题“使用Handler实现预约时间功能”指的是利用Handler来实现在特定时间执行预定任务的功能...

    Handler+Looper+MessageQueue

    在深入理解 Handler、Looper 和 MessageQueue 的工作原理后,我们可以利用它们实现更复杂的异步任务处理,如定时任务、延时操作以及多个消息的有序处理等。同时,它们也是 Android 中其他异步处理机制(如 AsyncTask...

    Android应用源码之HandlerMessage1_HandlerMessage.zip

    在Android应用开发中,HandlerMessage1_HandlerMessage是一个关键的主题,涉及到Android系统中的消息处理机制,尤其是Handler、Message和Looper的使用。这些组件是Android异步编程的重要组成部分,用于解决UI线程与...

    Handler使用

    `Handler`是Android消息处理机制的核心部分,它与`Looper`和`Message`共同协作,实现了线程间的消息传递。`Handler`通常在主线程(UI线程)中创建,用于接收并处理来自其他线程的消息。 ### 2. Handler工作原理 - ...

    handler与looper及messagequeue的简单总结

    在Android开发中,Handler、Looper和MessageQueue是用于实现线程间通信的关键组件,它们共同构建了一个消息处理机制。理解这三个概念以及它们之间的关系对于优化应用程序的性能和响应性至关重要。 Handler(处理器...

    android demo,使用Handler的postDelay,Runnable run实现延时3秒的splash。

    在这个例子中,我们设定3000毫秒(即3秒)的延迟时间,使得Splash Screen显示3秒后自动消失或跳转到下一个页面。 3. **Runnable**: Runnable是Java中的一个接口,它定义了一个run方法。当我们将一个实现了Runnable...

    Handler,Looper和Message

    在Android开发中,`Handler`、`Looper`和`Message`是实现线程间通信的重要组件,它们共同构建了一个消息处理机制。理解这三个概念对于优化应用程序的性能和用户体验至关重要。 `Handler`(处理器)是Android中的一...

    handler发送和接收message的各种方式

    handler发送和接收message的各种方式 (1)Handler.SendEmptyMessage(what); (2)Handler.obtainMessage(int what, int arg1, int arg2, Object obj).sendYToTarget(); (3)Message.obtain(handler, MESSAGE_MSG, 0, 0, ...

    Handler一般处理程序实现实现文件无刷新上传

    Handler一般处理程序实现实现文件无刷新上传

    Android 之 Looper、MessageQueue、Handler 与消息循环

    ### Android之Looper、MessageQueue、Handler与消息循环详解 #### 一、概述 在Android开发过程中,消息处理机制是至关重要的部分,它涉及到应用程序如何管理、传递和响应各种事件。本篇文章将深入探讨Android中...

    Android的Message机制(Handler、Message、Looper)

    下面将详细介绍这些组件的功能与协作方式。 #### 1.1 模型介绍 **Message**:消息可以是硬件产生的(例如用户点击屏幕或按下按键)也可以是软件生成的。每个消息通常携带一些数据和操作指令。 **MessageQueue**:...

    Handlerjava代码实现

    `Handler`类的主要职责是接收和处理`Message`对象,这些对象通常在后台线程(如`Thread`或`AsyncTask`)中创建,并通过`Handler`发送到主线程。这样,即使任务在后台执行,也能安全地更新UI。在Android系统中,主线...

Global site tag (gtag.js) - Google Analytics