Chronometer计时器

(这不算是Materual Design中的新控件,只是第一次用到特此记录一下)
安卓提供了一个计时器组件:Chronometer,该组件extends TextView,因此都会显示一段文本,但是它显示的时间是从某个起始时间开始过去了多少时间,它只提供了android:format一个属性用于指定计时器的计数格式。

Chronometer的用法很简单,它支持如下用法:

  • getBase():返回时间。
  • setBase(long base):设置计时器的起始时间。
  • start():开始计时。
  • stop():停止计时。
  • setFormat(String format):设置显示时间的格式。
  • setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):为计时器绑定监听事件。

示例:

一个一分钟的计时器:




    

    
public class MainActivity extends AppCompatActivity {

    Chronometer ch ;
    Button  start ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
//        获取计时器组件
        ch=(Chronometer)findViewById(R.id.chronometer);
//        获取开始组件
        start = (Button)findViewById(R.id.button);
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //设置开始计时时间
                ch.setBase(SystemClock.elapsedRealtime()-timeDifference*1000);//timeDifference真正想要显示的时间 单位秒
                //启动计时器
                ch.start();
            }
        });
        //为计时器绑定监听事件
        ch.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener()
        {
            @Override
            public void onChronometerTick(Chronometer ch)
            {
                // 如果从开始计时到现在超过了60s
                if (SystemClock.elapsedRealtime() - ch.getBase() > 60 * 1000 {
                    ch.stop();
                    start.setEnabled(true);
                }
            }
        });
    }
}

效果图:

image

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