Показать миллисекунды с помощью 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 секунды за заданную продолжительность. Это должно работать.