Показать миллисекунды с Android-хронометром - PullRequest
13 голосов
/ 05 июня 2010

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

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

Ответы [ 4 ]

12 голосов
/ 15 января 2012

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

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

5 голосов
/ 05 июня 2010

Возможно ли это сделать?

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

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

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

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

0 голосов
/ 16 мая 2012

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

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

0 голосов
/ 21 августа 2010

Я нашел способ после многих и многих исследований. Я не знаю, эффективен он или нет, потому что правда в том, что эмулятор дает сбой примерно через 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);
    }
  };
}
...