Android: рассчитывать и обновлять TextView без зависания пользовательского интерфейса - PullRequest
0 голосов
/ 05 февраля 2012

Поэтому я пытаюсь заставить SeekBar функционировать как педаль газа.

Когда он находится в нейтральном положении (прогресс = 50), тогда мое значение не меняется.Когда прогресс SeekBar становится больше или меньше 50, я беру эту разницу из 50 и использую ее для вычисления значения, которое передается в TextView.

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

Моей первой мыслью был поток, у которого был цикл while, который спал, а затем обновил значение.Я сохранил прогресс SeekBar во всем мире.Это сработало для вычисления моего значения, но, поскольку оно не работает в потоке пользовательского интерфейса, я не могу обновить пользовательский интерфейс из него.

Как я могу заставить этот SeekBar с "педалью газа" работать?

Ответы [ 2 ]

1 голос
/ 05 февраля 2012

Все это может выполняться в потоке пользовательского интерфейса.Используйте postDelayed, чтобы запускать обработчик для обновления вашего «спидометра» время от времени (запрос 250 мс кажется нормальным).Как бы часто вы ни выполняли ваш обработчик, вы будете использовать фактическое время, а не запрошенный интервал, чтобы рассчитать обновление спидометра.(Это необходимо делать при любом физическом моделировании, потому что реальный мир продолжает работать независимо от того, как часто или как нерегулярно вызываются ваши функции обновления.)

0 голосов
/ 05 февраля 2012

вам нужно использовать AsyncTask здесь

...