2015-01-15 2 views
0

Я в настоящее время обучение анимации в Android, и вот что я прочитал в руководстве:Оптимизация `Canvas.drawCircle` с предопределенным` Path`

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

и

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

В моем приложении я планирую постоянно рисовать десятки кругов, и я хочу оптимизировать этот процесс, а также, возможно. У меня есть метод Canvas.drawCircle(X, Y, RADIUS, Paint), где я могу поставить предопределенный Paint, но не предопределенный Path.

Вопрос: если бы я мог предоставить предопределенный Path, а также Paint, это улучшило бы эффективность рендеринга? Если да, то какой метод или метод следует использовать вместо drawCircle?

ответ

1

Вы вообще не используете Путь, поэтому не беспокойтесь о предопределенных путях. Вам не нужно оптимизировать код, если вы не видите, что он становится медленным, чего не должно быть. Одна из возможных оптимизаций заключается в том, что вы рисуете много раз круг одного радиуса и той же краски (но в разных положениях), один раз рисуете в растровое изображение и затем рисуете это растровое изображение в каждом месте. Если вы это сделаете, не подготовьте растровое изображение в методе onDraw, подготовьте его только тогда, когда его нужно изменить.

Смежные вопросы