我要实现的功能是点击按钮开始工作,计时器开始计时,再点停止计时,再点一次接着之前的时间计时。我使用的是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");
新闻热点
疑难解答