一、 重點
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, 即目錄名