Помогите мне оптимизировать этот график анимации - PullRequest
4 голосов
/ 31 марта 2011

Мне нужна помощь с этой простой анимацией на моем телефоне Android.Я новичок с анимацией и графикой.

Я отображаю данные акселерометра в виде скользящего окна временных рядов.Когда считываются новые данные акселерометра, его данные отображаются справа, сдвигая предыдущие данные влево, как показано ниже:

enter image description here

Моя программа работает довольно плавно, но яхотел бы помочь с оптимизацией анимации.Вот мои основные проблемы:

  1. Моя текущая реализация считывает все данные акселерометра в одном потоке и сохраняет данные в очереди FIFO фиксированного размера для захвата ширины окна временного ряда.Затем я использую Timer.scheduleAtFixedRate (), чтобы отобразить все содержимое очереди так, чтобы весь график перерисовывался каждые 50 миллисекунд.Могу ли я улучшить это?Мне действительно нужно перерисовывать график так часто, как это?В другой подобной программе, которую я видел, каждый пиксельный столбец копируется в один пиксель влево, перелистывая график;столбец новейших данных рисуется в крайнем правом столбце пикселей.Это лучше?

  2. Я перерисовываю легенду (вверху слева) в потоке рисования, который выполняет функцию рисования каждые 50 миллисекунд.Есть ли способ «сохранить» эту легенду вместо того, чтобы постоянно перерисовывать ее?

Буду признателен за любую другую помощь.Я слышал об оптимизации, такой как двойная буферизация, но не знаю, поможет ли это мне.

1 Ответ

1 голос
/ 01 апреля 2011

Если условные обозначения и перекрестие необходимо нарисовать только один раз, поместите их в буферное растровое изображение. Для вашей линии графика, возможно, попробуйте использовать объект Path для построения линий. Когда приходит время рисовать линии, просто нарисуйте LineLine в соответствующую точку, а затем переведите холст влево соответствующим образом. Если

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...