Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用了错误的资源_Android_Android Resources - Fatal编程技术网

Android 使用了错误的资源

Android 使用了错误的资源,android,android-resources,Android,Android Resources,我有两种不同屏幕尺寸的布局: 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.

我有两种不同屏幕尺寸的布局:

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}
Potrait方向具有
800/1.5841876=504dp
,因此应使用
layout
文件夹中的资源。 横向方向具有
1200/1.5841876=704dp
,因此应使用
layout-w580dp
文件夹中的资源。
但是,在这两个方向中,资源都是从
layout-w580dp
文件夹获得的。
是什么导致了这个问题?

根据从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.

    将<代码>布局土地< /代码>在这里更合适吗?@代码学徒,我认为它是平板电脑,它们可以有足够的空间来在纵向方向上进行广泛的布局。我不知道Android是如何选择使用哪个布局文件夹的规则。