Используется неверный ресурс
У меня есть два макета для разных размеров экрана:
layout
layout-w580dp
Отобразить журнал метрик для портретной и альбомной ориентации:
DisplayMetrics{density=1.3312501, width=800, height=1280, scaledDensity=1.5841876, xdpi=216.0, ydpi=216.0}
DisplayMetrics{density=1.3312501, width=1280, height=800, scaledDensity=1.5841876, xdpi=216.0, ydpi=216.0}
Портретная ориентация имеет 800/1.5841876=504dp
так ресурс от layout
папка должна быть использована. Пейзажная ориентация имеет 1200/1.5841876=704dp
так ресурс от layout-w580dp
папка должна быть использована.
Однако в обоих направлениях ресурс получается из layout-w580dp
папка.
Что вызывает эту проблему?
1 ответ
В соответствии с поддержкой нескольких экранов формула для преобразования из dp в физические пиксели px = dp * (dpi / 160)
, Поскольку мы хотим конвертировать в обратном направлении, нам нужно решить для dp
: dp = px * 160 / dpi
, Для ваших двух примеров у нас есть следующие значения и расчеты:
px = 800
(Ширина),dpi = 216
(Xdpi)dp = px * 160 / dpi = 800 * 160 / 216 = 592.59
,px = 1280
(Ширина),dpi = 216
(Xdpi)dp = px * 160 / dpi = 1280 * 160 / 216 = 948.15
,
В обоих случаях ширина составляет более 580 dp.