在Android开发过程中,计时控件是经常回使用到的,在Android控件库中有一个能快捷实现计时功能的控件Chronometer。用于显示从某个起始时间点开始经过的时间。它继承自TextView,显示的是从一个起始时间开始,一共过去了多长时间。
Chronometer方法
- getBase():返回时间。
- setBase(long base):设置计时器的起始时间。
- start():开始计时。
- stop():停止计时。
- setFormat(String format):设置显示时间的格式,内容可以是"%s",也可以添加额外的文字,如"计时器%s",也可以是"mm:ss"或"hh:mm:ss"。
- setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):为计时器绑定监听事件。
「注意」 使用Chronometer的stop方法时,只是停止刷新计时器的时间显示,在后台并没有停止计时。再次恢复计时时,并不是从停下的时间开始计时。Chronometer的setFormat(String format)方法并不能改变时间显示格式,Chronometer显示格式为00:00:00。
Chronometer使用
- 在布局文件中添加Chronometer控件:
<Chronometer
android:id="@+id/mChronometer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp" />
- 在Activity或Fragment中获取Chronometer实例,并设置基本时间:
Chronometer mChronometer = findViewById(R.id.mChronometer);
mChronometer.setBase(SystemClock.elapsedRealtime());
- 启动计时器:
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mChronometer.start();
}
});
- 停止计时器:
stopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mChronometer.stop();
}
});
- 设置计时器格式:
mChronometer.setFormat("mm:ss"); // 显示格式为mm:ss,例如03:45
- 添加计时器监听器:
mChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
long elapsedMillis = SystemClock.elapsedRealtime() - chronometer.getBase();
if (elapsedMillis >= 60000) {
// 如果计时器超过了60秒,弹出Toast
Toast.makeText(this, "60秒了", Toast.LENGTH_SHORT).show();
}
}
});
Chronometer使用场景
- 「运动训练计时」:Chronometer可以用于各种运动训练中,例如跑步、游泳、健身等。通过记录每个训练阶段所需的时间,可以更好地掌握自己的训练进度。
- 「比赛计时」:Chronometer可以用于各种比赛计时中,例如田径比赛、游泳比赛、车辆竞速等。通过记录每个选手所需的时间,可以更准确地评估他们的表现。
- 「实验测量」:Chronometer可以用于各种实验测量中,例如化学反应时间、物理运动时间等。通过记录每个阶段所需的时间,可以更精确地获得实验数据。
- 「倒计时功能」:Chronometer也可以用于实现倒计时功能,例如定时器、倒计时器等。通过设置起始时间,并使用Chronometer来显示经过的时间,可以实现精确的倒计时功能。
- 「时间跟踪」:在需要跟踪一段时间的场景下,Chronometer也可以派上用场。例如,跟踪用户完成某项任务所花费的时间,或者跟踪某个事件发生的时间。
Chronometer控件适用于需要精确计时和时间显示的场景。它可以提供直观的时间显示,并且可以通过编程方式控制计时的起始点和计时长度。