Главная » Разработка для Android » Улучшение качества отображения с помощью сглаживания

0

При создании нового объекта Paint вы можете передать в его конструк- тор несколько флагов, которые будут влиять на способ отображения. Одним из наиболее интересных из них считается флаг ANTI_ALIAS_FLAG, обес- печивающий сглаживание диагональных линий, рисуемых объектом Paint (снижая при этом производительность).

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

Можно задать оба этих флага вручную, используя методы setSubpixelText и setAntiAlias:

myPaint.setSubpixelText(true);

myPaint.setAntiAlias(true);

Рекомендации по использованию объекта Canvas для рисования

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

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

Существует множество методик, которые помогают минимизировать потребление ресурсов, связанное с процессом отрисовки. Далее приводится несколько  советов, с помощью которых вы сможете создавать хорошо вы- глядящие  и отзывчивые Активности (этот список неисчерпывающий).

• Учитывайте размер и ориентацию. Разрабатывая Представления и На- ложения, не забывайте учитывать и проверять то, как они выглядят при разных разрешениях, размерах экрана и плотностях  пикселов.

• Создавайте статические объекты только один раз. Создание  объ- ектов и сбор мусора — чрезвычайно «дорогие»  операции.  По воз- можности  создавайте  объекты для рисования,  такие как Paint,  Path и Shader, всего один раз, избегая такой повторой операции при каждой перерисовке Представления.

• Помните, что метод onDraw потребляет много ресурсов.  Выполне- ние метода onDraw — ресурсоемкий процесс, в ходе которого операци- онная система вынуждена проводить какое-то количество операций по совмещению и созданию растровых изображений. Ниже представлено несколько  способов, с помощью которых можно изменять  внешний вид объекта Canvas без перерисовки.

§ Проведите преобразования Холста. Используйте такие методы, как rotate  и translate для упрощения  сложного взаимного  позициони- рования элементов на вашем Холсте. К примеру, вместо позициони- рования и вращения текстового элемента вокруг циферблата часов поверните Холст на 22,5° и нарисуйте текст на том же месте.

§ Используйте анимацию. Она понадобится для проведения заранее заданных преобразований вашего Представления, вместо того чтобы перерисовывать его вручную. Операции масштабирования, пово- рота и перемещения можно выполнить для любого Представления внутри Активности. В итоге ресурсы расходуются  эффективно.

§ Применяйте растровые изображения, картинки в формате 9-patch и ресурсы Drawable.  Если у ваших Представлений статический

фон, стоит обратить внимание на растровые, масштабируемые (NinePatch) и статические изображения, заданные в формате XML, вместо того чтобы создавать их динамически.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии