学堂 学堂 学堂公众号手机端

Android程序中使用定时器Timer

lewis 1年前 (2024-04-16) 阅读数 10 #技术


一、 重点

1. 如何使用handler和message


2. 如何延时调用

1)使用延迟发消息的方式

2) 也可以使用android.util.Timer与handler相结合的方式

二、 举例

1. 功能:实现一个应用界面,在用户长按触模屏两秒后,打出Log信息

2. 步骤:

1) 建立project

a) 在eclipse中点击菜单File->New->Project……

b) 选择Android Project按Next

c) 填写project的各项内容如下
Project name: test_xy // 目录名, 它位于你设定的workspace之下
Package name: com.android.test //打包名称
Activity name: .TestXy // 类名(生成文件TestXy.java)
Application name: test_xy // 可执行程序名
然后点Finish按钮

2) 修改TestXy.java代码如下package com.android.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

public class TextXy extends Activity {
/** Called when the activity is first created. */
static final int MESSAGE_LONG_PRESS = 1; // 定义长按事件ID static final int LONG_PRESS_TIMEOUT = 2000; // 定义长按为2秒 final Handler mHandler = new LongPressHandler(); // 定义handler
class LongPressHandler extends Handler { // handler类的实现 public void handleMessage(Message msg) { // 事件处理函数switch (msg.what) {
case MESSAGE_LONG_PRESS: // 选择事件ID Log.d("TEST_XY", "now long press!");
break;
}
}
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

public boolean onTouchEvent(MotionEvent ev) { // 处理触屏事件 int action = ev.getAction(); // 得到触屏动作 if (action == MotionEvent.ACTION_DOWN) { // 手指按下 mHandler.sendMessageDelayed(mHandler
.obtainMessage(MESSAGE_LONG_PRESS),
ONG_PRESS_TIMEOUT); // 延时2秒后发送事件 } else if (action == MotionEvent.ACTION_UP) { // 手指抬起 mHandler.removeMessages(MESSAGE_LONG_PRESS);
// 取消延时事件 }
return false;
}
}

3) 运行

a) 在eclipse中点击菜单Run->Run Configurations……

b) 双击左边的Android Application,产生了一个New Configuration,点开它填写内容如下:
Name: yan_config // 随便起一个
Project: test_xy // 刚才起的project, 即目录名

c) 点击Apply,然后点Run,多等一会儿就出来了

d) 此时点击右上的DDMS,可看到Log信息,在长按屏幕两秒后,可看到刚才加入的Log信息

版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门