«

»

Мар
10

Задание размеров UI в Андроид. Различие между dp, sp и px

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

На сайте разработчиков Андроид имеется исчерпывающая информация по данному вопросу. Всего для задания размеров нам доступно 6 различный единиц: dp, sp, pt, px, mm и in. Давайте разберемся, что они из себя представляют.

  • dp, они же dip, они же пиксели независимые от плотности. Это абстрактная единица измерения, которая зависит от плотности экрана. Для экрана плотностью 160 dpi один dp равняется одному пикселю (px). На экранах с другой плотностью коэффициент пересчета dp в пиксели зависит от его плотности. Например, на экране плотностью 240 dpi один dp будет равен двум пикселям. В общем виде формула связывающая dp и px следующая: X [px] = Y [dp] * Z [dpi] /160 [dpi], где X – значение размера в пикселях, Y – в dp, Z – плотность экрана устройства в точках на дюйм
  • sp – масштабируемые, независимые пиксели. Один sp равен одному dp, если у пользователя в системе задан нормальный размер шрифтов. Данная единица предназначена для задания размеров шрифтов. Если у пользователя выбран большой размер шрифтов, то все ваши шрифты, размеры которых заданы в sp будут больше, чем у пользователя, у которого в системе выбран нормальный размер шрифтов.
  • pt – точки. Один pt равняется 1/72 дюйма (1 pt = 1/72 in)
  • px – пиксели. Размер в реальных пикселях экрана. Из-за большого разнообразия параметров размеров экранов Андроид устройств данную единицу измерений следует применять с осторожностью
  • mm – миллиметры. Определяет физический размер элемента. Например, если вы создадите кнопку размером 10х10 мм, то приложив линейку к экрану вашего устройства и, физически померив размер этой кнопки, вы получите ровно 10х10 мм.
  • in – дюймы. 1 [mm]= 0.0393700787 [in]

Так как же всем этим пользоваться? В большинстве случаем вам будет достаточно двух единиц: sp – для задания размеров шрифтов и dp – для всего остального. Используя эти единицы измерений, ваше приложение будет автоматически подстраиваться под параметры экрана устройства. Если дизайн вашего приложения разрушается при увеличении размера шрифтов, то для их задания, несмотря на рекомендации, следует использовать dp  единицы (в критических местах, там где увеличение шрифтов происходит безболезненно стоит все же использовать sp единицы). Подробнее о том как создавать приложения поддерживающие различные параметры экранов можно почитать в официальной документации.

Напоследок хочу так же упомянуть еще об одном. Иногда при разработке приложений нужно сделать следующее: на маленьком экране смартфона разместить все поплотнее (шрифт и иконки поменьше, например), а на экране планшета сделать все покрупнее. К сожалению, совсем простого способа добиться такого эффекта нет. Чтобы реализовать такое поведение, нужно создать для каждого случая соответствующие файлы ресурсов, которые будут использоваться в зависимости от параметров экрана. Для этой цели Андроид предоставляет нам спецификаторы, которые мы можем добавить к названиям папок, в которых хранятся ресурсы. Например, если к названию папки добавить large, то ресурсы из этой папки будут применяться на больших экранах. В данных папках вы можете хранить разметки интерфейса под разные экраны, либо с помощию тега <dimen> вынести туда только собственно размеры, а из файлов разметки ссылаться на них. Удачной разработки.

Если статья оказалась вам полезной или почему на сайте есть реклама

Добавить комментарий

Мы сохраним Ваш e-mail в тайне.