计时器(Chronometer)
Android 还提供了一个计时器组件:Chronometer,该组件与TextClock都继承自TextView,因此他们都会显示一段文本。但Chronometer都不是显示当前时间,它显示的是从某个起始时间开始,一共过去了多长时间。
Chronometer 的用法也很简单,它只提供了一个androrid:fomat属性,用于指定计时器的计时格式,除此之外,Chronometer还支持如下常用方法:
- setBase(long base):设置计时器的起始时间
- setFormat(String format):设置显示时间格式
- start():开始计时
- stop():停止计时
- setOnChronometerTickListener(Chronometer.OnChronometerTickListerner):为计时器绑定事件监听器,当计时器改变时触发该监听器。
package com.dezai.chronometer;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
public class MainActivity extends AppCompatActivity {
Chronometer ch;
Button start;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取计时器组件
ch=(Chronometer) findViewById(R.id.test);
//获取开始按钮
start=(Button) findViewById(R.id.start);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View source) {
//设置开始计时时间
ch.setBase(SystemClock.elapsedRealtime());
ch.start();
start.setEnabled(false);
}
});
//为Chronometer 绑定事件监视器
ch.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener(){
@Override
public void onChronometerTick(Chronometer ch){
//如果从开始计时到现在超过了5s
if(SystemClock.elapsedRealtime()-ch.getBase()>5*1000){
ch.stop();
start.setEnabled(true);
}
}
});
}
}