Android Chronometer Format
Solution 1:
first proposal - left only for history
Chronometer c;
...
c.setFormat("HH:MM:SS");
Edit - This does not work at all! Sorry for the too fast, untested answer... Here is something that works:
Chronometer c;
...
c.setOnChronometerTickListener(new OnChronometerTickListener() {
publicvoidonChronometerTick(Chronometer cArg) {
long t = SystemClock.elapsedRealtime() - cArg.getBase();
cArg.setText(DateFormat.format("kk:mm:ss", t));
}
});
Solution 2:
It seems people who posted the previous answers did not even try what they suggested. It simply does not work the way they described. Refer to how to change format of chronometer? for more appropriate answers.
Solution 3:
After some testing, I came up with this code. It's not fully tested but you can provide me with more info if you
privatevoidformatChronometerText(Chronometer c){
int cTextSize = c.getText().length();
if (cTextSize == 5) {
breakingTime.setFormat("00:%s");
} elseif (cTextSize == 7) {
breakingTime.setFormat("0%s");
} elseif (cTextSize == 8) {
breakingTime.setFormat("%s");
}
}
I called this method in the onCreate()
method eg.
Chronometerc= ...
...
formatChronometerText(c);
c.setText("00:00:00");
I'll be back in a day to verify if it works or it needs to be called also after the size of the text changes. If you are a precautious person I suggest that you call it in the same context with c.start()
and c.stop()
if(ticking){
c.stop();
formatChronometerText(c);
} else {
formatChronometerText(c);
c.start()
}
Solution 4:
This works:
Chronometer chronometer;
chronometer.setOnChronometerTickListener(new OnChronometerTickListener() {
publicvoidonChronometerTick(Chronometer c) {
int cTextSize = c.getText().length();
if (cTextSize == 5) {
chronometer.setText("00:"+c.getText().toString());
} elseif (cTextSize == 7) {
chronometer.setText("0"+c.getText().toString());
}
}
});
Solution 5:
found a better solution with no memory allocation for the String every second:
c.setFormat("00:%s");
c.setOnChronometerTickListener(new OnChronometerTickListener() {
publicvoidonChronometerTick(Chronometer c) {
long elapsedMillis = SystemClock.elapsedRealtime() -c.getBase();
if(elapsedMillis > 3600000L){
c.setFormat("0%s");
}else{
c.setFormat("00:%s");
}
}
});
Post a Comment for "Android Chronometer Format"