суббота, 5 июля 2014 г.

Соответствие квалификаторов размеров экранов с реальными размерами экранов в пикселях

Устройства, работающие под Android'ом, имеют экраны самых разных размеров и плотности пикселей. Чтобы адаптировать разметку интерфейса под каждый из этих размеров, в проекте рядом с папкой layout можно создавать альтернативные папки для каждого из размеров экранов и даже его ориентации, например:

размеры
layout-small
layout-normal
layout-large
layout-xlarge

размеры и ландшафтная ориентация
layout-small-land
layout-normal-land
layout-large-land
layout-xlarge-land

размеры и портретная ориентация
layout-small-port
layout-normal-port
layout-large-port
layout-xlarge-port

размеры в независящих от плотности пикселях (доступно, начиная с Android 3.2):
layout-sw600dp (для наименьшей стороны равной и более)
layout-w600dp (для ширины равной и более)
layout-h400dp (для высоты равной и более)
и другие вариации

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

Нижеприведённая таблица поможет сравнить значения квалификаторов с размерами экранов реальных устройств:

Пиксели, зависящие от плотности
Физические пиксели при разных плотностях
квалификатор
размер в dp
ldpi
mdpi
tvdpi
hdpi
xhdpi
xxhdpi
120 (dpi)
160 (dpi)
213 (dpi)
240 (dpi)
320 (dpi)
480 (dpi)
k=0,75
k=1
k=1,33
k=1,5
k=2
k=3
стороны
стороны
стороны
стороны
стороны
стороны
стороны
длинная
короткая
длинная
короткая
длинная
короткая
длинная
короткая
длинная
короткая
длинная
короткая
длинная
короткая
small
426
320
320
240
426
320
567
426
639
480
852
640
1278
960
normal
470
320
353
240
470
320
625
426
705
480
940
640
1410
960
large
640
480
480
360
640
480
851
638
960
720
1280
960
1920
1440
xlarge
960
720
720
540
960
720
1277
958
1440
1080
1920
1440
2880
2160

Таким образом, можно констатировать, что квалификаторы small и normal, грубо говоря, соответствуют смартфонам, а large и xlarge - планшетам.