Главная » Разработка для Android » Менеджер компоновки RelativeLayout и аппаратно-независимые пикселы

1

По возможности следует избегать использования пиксельных значений, прописанных в коде программы. Это касается разметки, объектов Drawable и размеров шрифтов.

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

Внутри экземпляров своей разметки вы также должны избегать исполь- зования пиксельных значений  при указании размеров для Представлений, объектов Drawable и шрифтов. Вместо этого описывайте высоту и ширину элементов, применяя атрибуты wrap_content или fill_parent везде, где это уместно. При необходимости пользуйтесь аппаратно-независимыми пикселами (density-independent  pixels или  dp),  чтобы указывать  раз- меры Представлений, и значениями sp (scale-independent pixels) в случае со шрифтами.

ПРИМЕЧАНИЕ

При использовании значений dp и sp размеры изображения будут корректироваться и выглядеть одинаково на устройствах, имеющих экраны с разной плотностью. Один аппаратно-независимый пиксел (dp) соответствует одному обычному пикселу на экране с плотностью 160 dpi. Линия с толщиной 2 dp при плотности 240 dpi растянется на 3 пиксела.

Использование возможностей масштабируемой графики

Ранее в этой главе вы познакомились с ресурсами Drawable, большин- ство из которых могут быть описаны в формате XML. Все они поддерживают плавное масштабирование во время выполнения программы независимо от размера и плотности пикселов экрана.

По возможности вместо фиксированных растровых  изображений ис- пользуйте следующие ресурсы Drawable:

NinePatch;

ShapeDrawable;

GradientDrawable;

композитные ресурсы и ресурсы для описания  преобразований:

§ RotateDrawable и ScaleDrawable;

§ LevelListDrawable;

§ StateListDrawable.

Помните, что при описании этих ресурсов необходимо использовать аппаратно-независимые пикселы (dp).

Преимущество от использования масштабируемых ресурсов — универ- сальная поддержка экранов с разными размерами и разрешениями, фрейм- ворк автоматически масштабирует ваши элементы, обеспечивая самое вы- сокое качество изображения.

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

По теме:

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

1 комментарий

  1. Konstantin says:

    Т.е. если кто-то хочет точно знать сколько будет в пикселях, то можно воспользоваться формулой: px = dp * dpi / 160