Android系统自带控件Chronometer是一个简单的计时器,它默认的显示格式是00:00(MM:SS),那么我们想要0:00:00(H:MM:SS)这样的显示格式怎么办呢?
官方文档提供了两种方式,一种是在xml布局中使用android:format属性来设置
另外一种是在代码中使用setFormat()方法来设置
但是实际使用中我们会发现这两种方式都不起作用.
所以这里为了达到想要的效果还是要自己写一些代码.
方法一:
Chronometer timeView;
timeView.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer cArg) {
long time =System.currentTimeMillis() - cArg.getBase();
Date d = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.US);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
timeView.setText(sdf.format(d));
}
});
timeView.setBase(System.currentTimeMillis());
timeView.start();
方法二:
Chronometer timeView;
timeView.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer cArg) {
long time =System.currentTimeMillis() - 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 + "";
String timeFormat = hh + ":" + mm + ":" + ss;
meetingView.updateTime(timeFormat);
timeView.setText(sdf.format(d));
}
});
timeView.setBase(System.currentTimeMillis());
timeView.start();