Android путь холста в режиме реального времени - PullRequest
4 голосов
/ 04 июля 2011

Я хочу нарисовать (4 или 5) графики в реальном времени, визуализирующие большое количество данных (новое значение каждые 30 мс) в течение 15 минут. Я использую Path, но он работает очень медленно, когда я хочу отобразить более 20000 значений и перевести холст, и это ухудшается каждую секунду. Я также пытался использовать drawLine, но он не работает бегло на всех.

У кого-нибудь есть идеи по поводу лучшего решения, чем Path? Или может я что то не так делаю? Мое текущее решение: я инициализирую Путь в начале, а затем просто добавляю к нему новую строку каждый раз, когда получаю новое значение, а затем переводю холст.

Ответы [ 3 ]

3 голосов
/ 12 июля 2011

Отображение пути из 20 000 значений, вероятно, будет медленным независимо от того, что вы используете, даже в OpenGL, это просто много данных, отправляемых графическому чипу для рисования ...

«Правильный» путьсделать это (с точки зрения производительности) - это, вероятно, кэшировать как можно больше материала и рисовать только то, что нужно нарисовать.Например, вы можете нарисовать в растровом изображении первые N точек, а затем использовать только путь для следующих M точек (и нарисовать растровые изображения для предыдущих).Рисовать растровое изображение довольно быстро.Поэтому время от времени вы можете просто обновить свое растровое изображение (что займет немного больше времени), а затем отобразить оставшиеся точки.

Вы также можете выбрать более короткий путь: вам действительно нужно 20 000ценности ?Не могли бы вы сгруппировать пункты 5 на 5 или 10 на десять (или даже больше)?В настоящее время экраны имеют ширину не более 1280 пикселей ...

3 голосов
/ 28 сентября 2011

Рисует ли все это в каждом onDraw ()?Вот почему это медленно.Прежде всего, никто не может видеть изменения каждые 30 мс.Поэтому продолжайте рисовать обновления в битовой карте кэша, затем вызывайте invalidate ().Затем в onDraw () просто скопируйте это растровое изображение на холст.

0 голосов
/ 04 июля 2011

Рисование более 20000 линий с помощью canvas будет медленным, несмотря ни на что. Я держу пари, что на этот раз вы должны пойти с openGL. Эта ссылка может быть полезна: http://obviam.net/index.php/opengl-es-with-android-switching-from-canvas-to-opengl/

...