效果图:
activity代码:
- package cn.com.chenzheng_java;
- import java.util.Timer;
- import java.util.TimerTask;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.SystemClock;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.Chronometer;
- /**
- * @description Chronometer计时器的应用实例
- * @author chenzheng_java
- * @since 2011/03/17
- *
- */
- public class ChronometerActivity extends Activity {
- Chronometer chronometer;
- Timer timer = new Timer();
- TimerTask task = new TimerTask() {
- @Override
- public void run() {
- chronometer.stop();
- Log.i("通知", "计时结束");
- }
- };
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.chronometer);
- chronometer = (Chronometer)findViewById(R.id.chronometer1);
- Button button = (Button)findViewById(R.id.button_ch);
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- /**
- * SystemClock.elapsedRealtime() 获取从启动开始的时间,设置了它之后计时器会从00:00开始计时
- * SystemClock.currentThreadTimeMillis()获取当前Thread的运行时间
- * SystemClock.setCurrentTimeMillis (long millis) 设置当前的时间
- *
- * chronometer.setBase()方法可以设置当前的计时器开始计时的时间
- */
- chronometer.setBase(SystemClock.elapsedRealtime());
- /**
- * 设置现实的格式,你可以指定一个字符串,字符串中包含一个%s,然后chronometer
- * 就会自动将mm:ss的那个时间放置到你的第一个%s的位置。
- */
- chronometer.setFormat("当前时间:%s");
- // 启动
- chronometer.start();
- Log.i("通知", "计时开始");
- Handler handler = new Handler();
- handler.post(new Runnable() {
- @Override
- public void run() {
- timer.schedule(task, 10000);
- }
- });
- }
- });
- }
- }
chronometer.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent" android:layout_height="match_parent"
- android:orientation="vertical">
- <Chronometer android:id="@+id/chronometer1" android:text="Chronometer" android:gravity="center_horizontal"
- android:layout_width="match_parent" android:layout_height="wrap_content"></Chronometer>
- <Button android:text="click" android:id="@+id/button_ch"
- android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
- </LinearLayout>
----------------------------------------------------------------------
chronometer是一个计时器,我们可以通过其进行设置。主要的方法有
我们可以看到,我们还可以注册一个Chronometer.OnChronometerTickListener事件,每当chronometer时间发生变化时就会触发该事件,也就是说,1秒钟会触发一次。