android之计时器 chronometer
16lz
2021-01-23
在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;@Overrideprotected 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.更多相关文章
- Android中修改系统时间的几种方式
- Android中判断字符串中必须包含字母或者数字_Android
- android9.0 系统默认时间修改
- android 日期时间选择器
- android 复制、粘贴字符串 (判断API 11 )
- Android实现自定义的 时间日期 控件