使用了错误的资源
Wrong resource is used
我有两种不同屏幕尺寸的布局:
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
文件夹中获得的。
是什么导致了这个问题?
根据Supporting Multiple Screens,从 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。
我有两种不同屏幕尺寸的布局:
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
文件夹中获得的。
是什么导致了这个问题?
根据Supporting Multiple Screens,从 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。