我的一个问题是在android中改变计时器的格式.我有问题,天文钟显示其00:00格式的时间,我希望它以00:00:00格式出现.有谁知道答案?
Md.*_*lam 42
这是一个简单而智能的解决方案,时间格式00:00:00在Android的计时器
Chronometer timeElapsed = (Chronometer) findViewById(R.id.chronomete);
timeElapsed.setOnChronometerTickListener(new OnChronometerTickListener(){
@Override
public void onChronometerTick(Chronometer cArg) {
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);
}
});
timeElapsed.setBase(SystemClock.elapsedRealtime());
timeElapsed.start();
Run Code Online (Sandbox Code Playgroud)
小智 18
我正在处理同样的问题.实现这一目标的最简单方法是覆盖Chronometer的updateText方法,但不幸的是它是一个私有方法,所以我这样做了:
mChronometer.setText("00:00:00");
mChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
CharSequence text = chronometer.getText();
if (text.length() == 5) {
chronometer.setText("00:"+text);
} else if (text.length() == 7) {
chronometer.setText("0"+text);
}
}
});
Run Code Online (Sandbox Code Playgroud)
我知道编写自定义小部件会更好,但对于小型项目,它可能更合适.
在计时器上设置格式允许使用DateUtils.formatElapsedTime格式化围绕实际时间和时间的格式文本.
希望有所帮助.
在Kotlin 中,找到了一个更好的解决方案,没有每秒为 String 分配内存
cm_timer.format = "00:%s"
cm_timer.setOnChronometerTickListener({ cArg ->
val elapsedMillis = SystemClock.elapsedRealtime() - cArg.base
if (elapsedMillis > 3600000L) {
cArg.format = "0%s"
}
else {
cArg.format = "00:%s"
}
})
Run Code Online (Sandbox Code Playgroud)
这里cm_timer
是天文台表
我正在开发一个使用这种格式的倒计时器,但它适用于 HH:MM:SS。这就是您正在寻找的内容,还是您正在寻找 MM:SS: 毫秒。您可以使用此代码并使其从 0 开始计数,而不是向下计数。这是链接 - 格式化倒数计时器 00:00:00 不起作用。显示 00:00:00 直到暂停,然后显示剩余时间 ,这可能会有所帮助 - 使用 Android Chronometer 显示毫秒
归档时间: |
|
查看次数: |
27152 次 |
最近记录: |