android之计时器 chronometer

在Android的SDK中,为我们提供了一个计时器,这个计时器称为Chronometer,我们可以成它为Android的一个组件,同时它也具备自己独有的方法。

Chronometer的使用比较方面简单,再也不需要使用定时器来管理时间了。

代码如下:

package com.kelly.timer;

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.Chronometer;
import android.widget.Toast;
import android.widget.Chronometer.OnChronometerTickListener;

public class MainActivity extends Activity {

	Chronometer chronometer;
	long toatlTime = 0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		chronometer = (Chronometer) findViewById(R.id.timer);

		/**
		 * 设置现实的格式,你可以指定一个字符串,字符串中包含一个%s,然后chronometer
		 * 就会自动将mm:ss的那个时间放置到你的第一个%s的位置。
		 */
		// chronometer.setFormat("%s");

		chronometer
				.setOnChronometerTickListener(new OnChronometerTickListener() {

					public void onChronometerTick(Chronometer cArg) {
						toatlTime++;

						long time = SystemClock.elapsedRealtime()
								- cArg.getBase();
						int h = (int) (time / 3600000);
						int m = (int) (time - h * 3600000) / 60000;
						int s = (int) (time - h * 3600000 - m * 60000) / 1000;
						String hh = h < 10 ? "0" + h : h + "";
						String mm = m < 10 ? "0" + m : m + "";
						String ss = s < 10 ? "0" + s : s + "";
						cArg.setText(hh + ":" + mm + ":" + ss);
					}
				});

		/**
		 * SystemClock.elapsedRealtime() 获取从启动开始的时间,设置了它之后计时器会从00:00开始计时
		 * SystemClock.currentThreadTimeMillis()获取当前Thread的运行时间
		 * SystemClock.setCurrentTimeMillis (long millis) 设置当前的时间
		 * 
		 * chronometer.setBase()方法可以设置当前的计时器开始计时的时间
		 */
		chronometer.setBase(SystemClock.elapsedRealtime());
		// 启动
		chronometer.start();

	}
	public void stop(View view) {
		chronometer.stop();
		Toast.makeText(getBaseContext(), "-->" + (toatlTime - 2), 1).show();
	}
}
Chronometer显示时间格式为00:00,如何你想改变格式,可以在onChronometerTick()中进行操作。对于如何获取运行的总时间,则通过totalTime++实现,但此时的totalTime和运行的总时间并不相符,因为start、stop都会触发onChronometerTick(),所以需要totalTime-2.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值