直接上代码,解释看注释,一个火箭发射倒计时的例子
main.xml
[html] <?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" >
<Button
Android:id="@+id/button"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="开始倒计时" />
<TextView
Android:id="@+id/textView"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
<?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" >
<Button
Android:id="@+id/button"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="开始倒计时" />
<TextView
Android:id="@+id/textView"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
TimerDemoActivity.
java[
java] package com.tianjf;
import
java.util.Timer;
import
java.util.TimerTask;
import
Android.app.Activity;
import
Android.os.Bundle;
import
Android.os.Handler;
import
Android.os.Message;
import
Android.util.Log;
import
Android.view.View;
import
Android.view.View.OnClickListener;
import
Android.widget.Button;
import
Android.widget.TextView;
public class TimerDemoActivity extends Activity implements OnClickListener {
private Button button;
private TextView textView;
private Timer timer;
// 定义Handler
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.d("debug", "handleMessage方法所在的线程:"
+ Thread.currentThread().getName());
// Handler处理消息
if (msg.what > 0) {
textView.setText(msg.what + "");
} else {
textView.setText("点火!");
// 结束Timer计时器
timer.cancel();
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.button);
textView = (TextView) findViewById(R.id.textView);
Log.d("debug", "onCreate方法所在的线程:"
+ Thread.currentThread().getName());
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
// 按钮按下时创建一个Timer定时器
timer = new Timer();
// 创建一个TimerTask
// TimerTask是个抽象类,实现了Runnable接口,所以TimerTask就是一个子线程
TimerTask timerTask = new TimerTask() {
// 倒数10秒
int i = 10;
@Override
public void run() {
Log.d("debug", "run方法所在的线程:"
+ Thread.currentThread().getName());
// 定义一个消息传过去
Message msg = new Message();
msg.what = i--;
handler.sendMessage(msg);
}
};
// 定义计划任务,根据参数的不同可以完成以下种类的工作:
// 1.schedule(TimerTask task, Date when) ー> 在固定时间执行某任务
// 2.schedule(TimerTask task, Date when, long period) ー> 在固定时间开始重复执行某任务,重复时间间隔可控
// 3.schedule(TimerTask task, long delay) ー> 在延迟多久后执行某任务
// 4.schedule(TimerTask task, long delay, long period) ー> 在延迟多久后重复执行某任务,重复时间间隔可控
timer.schedule(timerTask, 3000, 1000);// 3秒后开始倒计时,倒计时间隔为1秒
break;
default:
break;
}
}
}