Вызов TextView.setText () периодически вызывает рывок в интерфейсе - PullRequest
2 голосов
/ 28 сентября 2010

Я кодирую аудиоплеер, где поток обновляет TextView, представляющий прошедшее время дорожки, каждые 250 миллисекунд.

Дисплей выглядит так:

1: 30/2: 30 <----- Индикатор выполнения ----->

TextView 1 - 1: 30 /, а TextView 2 - 2: 30.

Оба значения имеют значение wrap_content для ширины.

Что происходит, так это то, что в каждом 250-миллисекундном цикле поток проверяет текущее время и обновляет TextView 1. В этот краткий момент TextView 2 и индикатор выполнения на мгновение сдвигаются вправо примерно на 2-4 пикселя. Затем они возвращаются на место, пока то же самое не произойдет во время следующего цикла.

Я не знаю, что происходит. Здесь нет символов пробела и т. Д., И теоретически все должно работать без сбоев, но это не так.

Кто-нибудь может мне помочь? Я надеюсь, что кто-то еще мог столкнуться с подобной проблемой ....

PS: Я инициализирую TextView 1 на 0: 00 / и TextView 2 на 0:00 в файле макета XML, и код обрабатывает его оттуда.

1 Ответ

5 голосов
/ 28 сентября 2010

Рассматривается использование фиксированной ширины (16-20dip?) Вместо wrap_content для этих полей?Шрифт с переменным тоном будет перемещать индикатор выполнения, поскольку 1:11 уже, скажем, 1: 59.

Или перейти к шрифту с фиксированной высотой, если время всегда будеттакое же количество символов.

...