УФ2. Единицы измерения, размеры экрана
Last updated
Was this helpful?
Last updated
Was this helpful?
Существуют разные единицы измерения объектов, такие как пиксели, сантиметры, миллиметры, дюймы. Рекомендуемыми единицами измерения при создании 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)