Инкремент ПрогрессБар на Хронометре "Тик"

У меня есть хронометр, который увеличивается каждую секунду и отображает прошедшее время на экране.

У меня также есть три индикатора прогресса:

  • SecondsProgressBar
  • MinutesProgressBar
  • HoursProgressBar

Когда хронометр увеличивается каждую секунду, я хотел бы заполнить SecondsProgressBar (By 1), пока его значение не достигнет 60, тогда я бы хотел заполнить MinutesProgressBar (By 1), пока его значение также не достигнет 60, тогда HoursProgressBar также должен быть заполнен, пока не достигнет заданного количества часов.

1 ответ

Решение

То, что вы хотите, называется круговой индикатор выполнения. На самом деле довольно просто создать один только в XML, стилизуя ProgressBar контроль. Вот статья, которая показывает, как построить круговой стиль ProgressBar.

Однако нужно помнить одну вещь - круговые индикаторы прогресса являются определенными. Это означает, что вам нужно заранее знать, какое максимальное значение вы можете показать. Это может быть немного проблемой, если вы хотите сделать хронометр, который может измерять случайные периоды времени. Но если вы знаете максимальный период, который вы можете измерить, вы можете соответствующим образом установить диапазон на индикаторе выполнения, и он позаботится о правильном отображении частичных значений.

Диапазон по умолчанию 0-100, предназначен для отображения процентов, поэтому вы можете просто рассчитать текущее значение в процентах от максимального значения и обработать его как процент. Но если ваш диапазон довольно большой, гранулярность будет слишком грубой, поэтому, если вам нужна более тонкая гранулярность, вам следует изменить диапазон.

Другие вопросы по тегам