Показать миллисекунды с помощью Android Chronometer

Я ищу способ сделать Хронометр в Android (желательно 1.6 и выше) покажет 10ths секунды при подсчете.

Можно ли это сделать? Если нет, есть ли свободная библиотека (и, желательно, с открытым исходным кодом), которая делает то же самое? В противном случае я напишу свой собственный, но я бы предпочел использовать чужой!

Ответы

Ответ 1

Можно ли это сделать?

Не совсем. Вы можете передать строку формата, которая показывает десятые доли секунды, но сам Chronometer обновляется каждую секунду. Частота обновления выпекается в коде.

Если нет, есть ли бесплатный (и предпочтительно с открытым исходным кодом), которая делает то же самое?

Chronometer source доступен в соответствии с Apache License 2.0, поэтому вы можете изменить его в соответствии с требованиями. Найдите все вхождения 1000 и измените их на 100, и вы, вероятно, больше всего там.

Имейте в виду, что этот Chronometer может использоваться в действии, но не в виджетах приложения, поскольку настраиваемые классы View не поддерживаются каркасом виджета приложения.

Ответ 2

Виджет хронометра Android по умолчанию не поддерживает миллисекундное форматирование.

Я изменил исходный код виджета хронометра, чтобы показать миллисекунды. Загрузите его из github.

Ответ 3

Я нашел путь после много-много исследований. Я не знаю, эффективна она или нет, потому что правда в том, что Эмулятор падает примерно через 10 секунд, но по телефону он работает нормально, и это делает это для меня. Это выглядит примерно так:

import android.os.Handler;
public class Chronometer extends Activity {
  private Handler mHandler = new Handler();
public void actions() {
  mHandler.removeCallbacks(mUpdateTimeTask);
  mHandler.postDelayed(mUpdateTimeTask, 1); //1 is the number of milliseconds you want the text to be updated
}
Runnable mUpdateTimeTask = new Runnable() {
  public void run() {
    i++;
    txt.setText(formatTime(i)); // formatTime is just for make it readable in HH:MM:SS:MS, but I assume you already have this
    mHandler.postDelayed(this, 1);
    }
  };
}

Ответ 4

Я создал экземпляр класса, который я построил внутри Activity. Этот новый класс был расширением класса Android CountDownTimer (добавьте реализованные методы)

Здесь в конструкторе вы можете добавить продолжительность в миллисекундах, а интервал - 1/10 секунды, то есть 100 миллисекунд. В методе onTick команды выполняются каждые 1/100th секунды за заданную продолжительность. Это должно работать.