在Android SDK中提供了多种时间服务。这些时间服务主要处理在一定时间间隔或未来某一时间发生的任务。Android系统中的时间服务的作用域既可以是应用程序本身,也可以是整个Android系统。本节将详细介绍这些时间服务的使用方法,并给出大量的实例供读者学习。
计时器:Chronometer
本节的例子代码所在的工程目录是src/ch08/ch08_chronometer
Chronometer是TextView的子类,也是一个Android组件。这个组件可以用1秒的时间间隔进行计时,并显示出计时结果。
Chronometer类有3个重要的方法:start、stop和setBase,其中start方法表示开始计时;stop方法表示停止计时;setBase方法表示重新计时。start和stop方法没有任何参数,setBase方法有一个参数,表示开始计时的基准时间。如果要从当前时刻重新计时,可以将该参数值设为SystemClock.elapsedRealtime()。
还可以对Chronometer组件做进一步设置。在默认情况下,Chronometer组件只输出MM:SS或H:MM:SS的时间格式。例如,当计时到1分20秒时,Chronometer组件会显示01:20。如果想改变显示的信息内容,可以使用Chronometer类的setFormat方法。该方法需要一个String变量,并使用"%s"表示计时信息。例如,使用setFormat("计时信息:%s")设置显示信息,Chronometer组件会显示如下计时信息:
计时信息:10:20
Chronometer组件还可以通过onChronometerTick事件方法来捕捉计时动作。该方法1秒调用一次。要想使用onChronometerTick事件方法,必须实现如下接口:
- android.widget.Chronometer.OnChronometerTickListener
在本例中有3个按钮,分别用来开始、停止和重置计时器,并通过onChronometerTick事件方法显示当前时间,代码如下:
- package net.blogjava.mobile;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.SystemClock;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.Chronometer;
- import android.widget.TextView;
- import android.widget.Chronometer.OnChronometerTickListener;
- public class Main extends Activity implements OnClickListener, OnChronometerTickListener
- {
- private Chronometer chronometer;
- private TextView tvTime;
- @Override
- public void onClick(View view)
- {
- switch (view.getId())
- {
- case R.id.btnStart:
- // 开始计时器
- chronometer.start();
- break;
- case R.id.btnStop:
- // 停止计时器
- chronometer.stop();
- break;
- case R.id.btnReset
- // 重置计时器:
- chronometer.setBase(SystemClock.elapsedRealtime());
- break;
- }
- }
- @Override
- public void onChronometerTick(Chronometer chronometer)
- {
- SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
- // 将当前时间显示在TextView组件中
- tvTime.setText("当前时间:" + sdf.format(new Date()));
- }
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- tvTime = (TextView)findViewById(R.id.tvTime);
- Button btnStart = (Button) findViewById(R.id.btnStart);
- Button btnStop = (Button) findViewById(R.id.btnStop);
- Button btnReset = (Button) findViewById(R.id.btnReset);
- chronometer = (Chronometer) findViewById(R.id.chronometer);
- btnStart.setOnClickListener(this);
- btnStop.setOnClickListener(this);
- btnReset.setOnClickListener(this);
- // 设置计时监听事件
- chronometer.setOnChronometerTickListener(this);
- // 设置计时信息的格式
- chronometer.setFormat("计时器:%s");
- }
- }
运行本节的例子,并单击【开始】按钮,在按钮下方会显示计时信息,在按钮的上方会显示当前时间,如图8.16所示。单击【重置】按钮后,按钮下方的计时信息会从"计时器:00:00"开始显示。
转自:http://blog.csdn.net/sunny2come/article/details/6456729