如果是疑惑其显示格式或者是没有work请直接到第三节,看是否是格式设置问题

Android自带的Chronometer可以实现简单的计时功能,它继承自TextView,实现的方式是View.postDelayed+Runnable。
特点是比较简单易用,用法比较单一,但可以通过回调函数做一些自定义操作:
Chronometer.OnChronometerTickListener

1. Layout

布局很简单,就像使用TextView一样,可以设置颜色,字体等。比如:

如果是API level 24及以上,还可以通过设置android:countDown="true"实现倒计时。

2. 使用

首先获取:

chronometer = findViewById(R.id.chronometer);chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {    @Override    public void onChronometerTick(Chronometer chronometer) {        Log.d(TAG, "Chronometer ticking");    }});

简单只需要三个接口:

  • 开始:start
  • 结束:stop
  • 设置计时起点:setBase,使用的时间是SystemClock.elapsedRealtime()

开始计时,以当前时间为base:

Log.d(TAG, "Start chronometer");chronometer.setBase(SystemClock.elapsedRealtime());chronometer.start();

结束计时:

Log.d(TAG, "Stop chronometer");chronometer.stop();

3. 设置格式

Chronometer有setFormat的接口,或者可以设置layout属性android:format="%s"
setFormat函数如果不设置,则显示的格式是"MM:SS"或者"H:MM:SS",超过一个小时则会显示小时位,否则不显示。

Chronometer会自己得到"MM:SS"或者"H:MM:SS"格式的计时字符串,并填充到setFormat字符串中的第一个"%s",所以这个接口存在一些误导,使得开发者会误认为填入的就是时间显示的格式。
因此,设置的格式字符串一定需要有一个"%s"(比如"计时:%s"),不然将不能看到计时。

如果setFormat不能满足需求,就只能通过回调函数进行定制了。
比如即使时间不足一个小时我们也想要显示小时位:

chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {    @Override    public void onChronometerTick(Chronometer c) {        Log.d(TAG, "Chronometer ticking");        long elapsedMillis = SystemClock.elapsedRealtime() - c.getBase();        if(elapsedMillis > 3600000L && elapsedMillis < 36000000L){            c.setFormat("0%s");        }else{            c.setFormat("00:%s");        }    }});

更多相关文章

  1. Android(安卓)BLE蓝牙开发中读取数据时设置Notify的方法
  2. android5.1-在系统设置里添加设置选项 以及 USB-OTG 模式切换
  3. 使用 Android(安卓)Studio 搭建安卓开发环境
  4. Android中控制屏幕旋转的相关设置
  5. android 自定义照相机Camera黑屏
  6. 针对android游戏截图分享
  7. Android开发:ImageView 设置圆角边框
  8. activity 设置Theme.Dialog View高度
  9. Android(安卓)通用Dialog的写法

随机推荐

  1. Android导入第三方jar包,proguard混淆脚本
  2. android 同时发送几条通知
  3. 自定义RatingBar的样式
  4. 记一次Android(安卓)OOM探险之旅
  5. 从网络获取图片,并缓存到SD卡
  6. Picasso学习
  7. 最新Android系统版本与API等级对应关系表
  8. Android AsyncTask 深入解析
  9. Android 中的定时事件使用
  10. Android(安卓)Notification.Builder通知