[Android]笔记11-计时器

计时器(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);
                }
            }
        });
    }
}

你可能感兴趣的:(计时器)