УФ2. Единицы измерения, размеры экрана

Какие единицы измерения используются?

Существуют разные единицы измерения объектов, такие как пиксели, сантиметры, миллиметры, дюймы. Рекомендуемыми единицами измерения при создании Android-приложения являются:

  • dp: (device-independent pixels) независимые от плотности экрана пиксели. Абстрактная единица измерения, основанная на физической плотности экрана с разрешением 160 dpi (точек на дюйм). В этом случае 1dp = 1px. Если размер экрана больше или меньше, чем 160dpi, количество пикселей, которые применяются для отрисовки 1dp соответственно увеличивается или уменьшается. Например, на экране с 240 dpi 1dp=1,5px, а на экране с 320dpi 1dp=2px. Общая формула для получения количества физических пикселей из dp: px = dp * (dpi / 160);

  • sp: (scale-independent pixels) независимые от масштабирования пиксели. Допускают настройку размеров, производимую пользователем. Рекомендуются для работы со шрифтами.

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

В случае применения dp объект использует разное количество пикселей для отрисовки 1dp. В итоге элементы располагаются однаково в независимости от устройства. На рис. 2 можно увидеть как располгается кнопка при тех же размерах dp на устройствах с разным разрешением.

Использование dp не означает, что интерфейс на разных устройствах будет выглядть одинаково, однако на разных устройствах интерфейс будет выглядеть более консистентно.

Для упрощения работы с размерами все размеры разбиты на несколько групп:

  • ldpi (low): ~120dpi

  • mdpi (medium): ~160dpi

  • hdpi (high): ~240dpi (к данной группе можно отнести такое древнее устройство как Nexus One)

  • xhdpi (extra-high): ~320dpi (Nexus 4)

  • xxhdpi (extra-extra-high): ~480dpi (Nexus 5/5X, Samsung Galaxy S5)

  • xxxhdpi (extra-extra-extra-high): ~640dpi (Nexus 6/6P, Samsung Galaxy S6)

Контроль

Last updated