首页 > 学院 > 开发设计 > 正文

Chronometer 计时器的实现

2019-11-07 23:11:04
字体:
来源:转载
供稿:网友

我要实现的功能是点击按钮开始工作,计时器开始计时,再点停止计时,再点一次接着之前的时间计时。我使用的是Chronometer 控件。

先看布局

<LinearLayout    android:layout_width="match_parent"    android:layout_height="70dp"    android:gravity="center|bottom"    android:orientation="horizontal" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="在线时长"        android:textColor="#fff"        android:textSize="32sp" />    <Chronometer        android:id="@+id/timer"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginLeft="15dp"        android:textColor="#fff"        android:textSize="32sp"        android:format="00:00:00"/></LinearLayout>

定义一个总时间,秒为单位

PRivate int totalTime = 0;

开始计时,调用Chronometer的监听事件

timer.start();timer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {    @Override    public void onChronometerTick(Chronometer chronometer) {        totalTime++;        timer.setText(FormatTime(totalTime));    }});

规范时间的显示格式

public static String FormatTime(int time) {    String hh = time / 3600 > 9 ? time / 3600 + "" : "0" + time / 3600;    String mm = (time % 3600) / 60 > 9 ? (time % 3600) / 60 + "" : "0" + (time % 3600) / 60;    String ss = (time % 3600) % 60 > 9 ? (time % 3600) % 60 + "" : "0" + (time % 3600) % 60;    return hh + ":" + mm + ":" + ss;}

停止计时

timer.stop();

我这里只是用到了开始和停止,如果想重置时间的话就设置它的base

timer.setBase(SystemClock.elapsedRealtime());

因为我需要显示时分秒,如果只是简易的计时器,不需要“时”,则没有必要调用监听,代码更简单。只要初始化Chronometer后,给它设置格式规范,然后调用开始和停止的方法,就可以实现计时器功能。

timer.setFormat("%s");


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表