效果显示图如下
定义一个Activity
package cn.mw.com;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.AnalogClock;
import android.widget.DigitalClock;
import android.widget.TextView;
public class EX02_01Activity extends Activity {
// 声明两个widget对象
private static AnalogClock ac;
private DigitalClock dc;
private TextView mTextView;
// 声明一常数作为判别信息用
protected static final int GUINOTIFIER = 0x1234;
// 声明与时间相关的变量
public Calendar mCalendar;
public int mMinutes;
public int mHour;
private int msecond;
// 声明关键 Handler 与Thread 变量
public Handler mHandler;
private Thread mClockThread;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView) findViewById(R.id.tv1);
ac = (AnalogClock) findViewById(R.id.anclock);
dc = (DigitalClock) findViewById(R.id.digitalclock01);
mHandler = new Handler() {
public void handleMessage(Message msg) {
// 这里是处理信息的方法
switch (msg.what) {
case EX02_01Activity.GUINOTIFIER:
// 在这里处理TextView对象show时间事件
mTextView.setText(mHour + " : " + mMinutes);
break;
}
super.handleMessage(msg);
}
};
/*
* 通过进程来持续取得系统时间
*/mClockThread = new LooperThread();
mClockThread.start();
}
// 改写一个Thread Class 用来持续取得系统时间
class LooperThread extends Thread {
public void run() {
super.run();
try {
do {
// 取得系统时间
long time = System.currentTimeMillis();
/* 通过Calendar 对象来取得小时与分钟 */
final Calendar mCalendar = Calendar.getInstance();
mCalendar.setTimeInMillis(time);
mHour = mCalendar.get(Calendar.HOUR);
mMinutes = mCalendar.get(Calendar.MINUTE);
msecond = mCalendar.get(Calendar.MINUTE);
// 让进程休息一秒
Thread.sleep(1000);
Message m = new Message();
m.what = EX02_01Activity.GUINOTIFIER;
EX02_01Activity.this.mHandler.sendMessage(m);
} while (EX02_01Activity.LooperThread.interrupted() == false);
// 当系统发出中断信息后停止本次循环
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<AnalogClock
android:id="@+id/anclock"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<DigitalClock
android:id="@+id/digitalclock01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>