Как изменить формат хронометра?
Одна из моих проблем заключается в изменении формата хронометра в android.
У меня проблема, что хронометр показывает свое время в формате 00:00, и я хочу, чтобы он появился в формате 00:00:00. Кто-нибудь знает ответ?
Ответы
Ответ 1
Я работал над таймером обратного отсчета, который использовал этот формат, но это было для HH: MM: SS. Это то, что вы ищете или ищете MM: SS: миллисекунды. Вы можете работать с этим кодом и подсчитывать его с нуля, а не вниз. Ссылка здесь -
Таймер обратного отсчета форматирования с 00:00:00 не работает. Отображается 00:00:00 до паузы, затем отображается оставшееся время.
и это может помочь -
Показывать миллисекунды с Android Chronometer
Ответ 2
Вот простое и умное решение для формата времени 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();
Ответ 3
Я имел дело с той же проблемой. Самый простой способ достичь этой цели - переопределить метод 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);
}
}
});
Я знаю, что было бы лучше написать собственный виджет, но для небольшого проекта он может быть подходящим.
Формат настройки на хронометре позволяет форматировать текст, окружающий фактическое время и время, отформатирован с использованием DateUtils.formatElapsedTime.
Надеюсь, что это поможет.
Ответ 4
Метод хронометров setFormat используется для добавления форматированного текста, например:
"Время% s от начала"
Результат
"Время 00:00 с начала"
В хронометре вы не можете выбирать между форматами HH: MM: SS или MM: SS.
Ответ 5
You can use this code. Setting the format and removing it
//Removing the format (write this in oncreate)
if(mChronometerformat){
mSessionTimeChro.setOnChronometerTickListener(new OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
if (chronometer.getText().toString()
.equals("00:59:59"))
chronometer.setFormat(null);
}
});}
// Setting the format
mSessionTimeChro.setBase(SystemClock.elapsedRealtime());
if (diffHours == 0) {
mSessionTimeChro.setFormat("00:%s");
mChronometerformat = true;
}
mSessionTimeChro.start();
Ответ 6
Почему просто не использовать класс Date?
timeElapsed.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer cArg) {
long time = SystemClock.elapsedRealtime() - cArg.getBase();
Date date = new Date(time);
DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
String dateFormatted = formatter.format(date);
cArg.setText(dateFormatted);
}
});
Простой и чистый