Одна из моих проблем заключается в изменении формата хронометра в android. У меня проблема в том, что хронометр показывает свое время в формате 00:00, и я хочу, чтобы он появился в формате 00:00:00. Кто-нибудь знает ответ?Как изменить формат хронометра?
ответ
Я работал над таймером обратного отсчета, который использовал этот формат, но это было для ЧЧ: ММ: СС. Это то, что вы ищете или ищете MM: SS: миллисекунды. Вы можете работать с этим кодом и подсчитывать его с нуля, а не вниз. Вот ссылка - Formatting countdown timer with 00:00:00 not working. Displays 00:00:00 until paused then displays the time remaining , и это может помочь - Show milliseconds with Android Chronometer
Хронометров метода SetFormat используется для добавления отформатированного текста, как:
"Время% s от начала"
в результате
«Время 00:00 с начала»
В хронометре вы не можете выбирать между форматами HH: MM: SS или MM: SS.
Итак, это означает, что вы не можете установить формат, конечный результат которого «00:00:00», без каких-либо манипуляций в «ChronometerTickListener», как предлагают другие ответы. не так ли? –
Я имел дело с тем же вопросом. Самый простой способ для достижения этой цели будет переопределение 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.
Надеюсь, что это поможет.
Вот простое и умное решение для формата время 00:00:00 в хронометре в андроиде
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();
Чувак, действительно очень хорошее решение. Самый простой способ, который я когда-либо видел;) –
спасибо за вашу идею, я немного изменил код, чтобы улучшить производительность здесь \t cArg.setText (String.format («% 02d:% 02d:% 02d», h, m , s)); –
есть ли способ сделать это, если хронометр находится в виджетах (виджетов на рабочем столе)? – ArJ
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();
Почему просто не использовать 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);
}
});
Простой и чистый
Класс Chronometer ожидает определенный шаблон в методе setText (String). Ваш код вызовет исключение. –
@FranziskusKarsunke Вы проверили этот шаблон? ** По умолчанию он отображает текущее значение таймера в форме «MM: SS» или «H: MM: SS», или вы можете использовать setFormat (String) для форматирования значения таймера в произвольную строку. ** – Marurban
Это работает, но более эффективно работать со временем как длинным, а не создавать экземпляр нового объекта Date и DateFormat каждую секунду. – k2col
- 1. Формат хронометра Android
- 2. Android Хронометрия: установленный формат хронометра
- 3. Создание хронометра в Android
- 4. Значение хронометра в строке
- 5. Как изменить формат времени
- 6. Как изменить формат DateTime
- 7. Как изменить формат NSDate
- 8. Как изменить формат словаря?
- 9. как изменить формат JSON
- 10. Как изменить формат даты?
- 11. Как изменить формат created_at
- 12. Как изменить формат цитаты?
- 13. Как изменить формат даты?
- 14. Как изменить формат таймера
- 15. Как изменить формат даты
- 16. Как изменить формат параметров?
- 17. Как изменить формат даты
- 18. Как изменить формат Json?
- 19. Как изменить формат даты?
- 20. Как изменить формат данных?
- 21. Как изменить формат датпикера?
- 22. Как изменить формат даты
- 23. как изменить формат массива
- 24. Как изменить формат изображения?
- 25. Запуск хронометра с reDraw
- 26. МОФ раскадровки для хронометра
- 27. Использование хронометра Android
- 28. Функция возобновления хронометра Android
- 29. как изменить формат времени пользовательский формат
- 30. Pass Время хронометра между действиями
им ищет HH: MM: СС ......... Ь хронометр не показывает его, когда он в течение секунд или минут, как 00:00: 00 format.it показывает только 00:00, когда обратный отсчет находится в секундах. или мин. – Nikki