【发布时间】:2014-04-07 15:27:18
【问题描述】:
我有一个图片,rectangle.png。它的尺寸是 75x197。它位于 res/drawable 和 res/drawable-xhdpi 中。它以这样的网格布局多次显示(来自 Nexus-10 的屏幕截图,一个 xhdpi 设备):
如果我从 res/drawable-xhdpi 中删除图像文件,从而导致布局使用相同的图像,但在 res/drawable 中,屏幕变为:
为什么会这样?
【问题讨论】:
我有一个图片,rectangle.png。它的尺寸是 75x197。它位于 res/drawable 和 res/drawable-xhdpi 中。它以这样的网格布局多次显示(来自 Nexus-10 的屏幕截图,一个 xhdpi 设备):
如果我从 res/drawable-xhdpi 中删除图像文件,从而导致布局使用相同的图像,但在 res/drawable 中,屏幕变为:
为什么会这样?
【问题讨论】:
为什么会这样?
res/drawable/,对于位图,等同于res/drawable-mdpi/。 Android 认为您的图像是为在 160dpi 的-mdpi 屏幕上使用而设计的。像 Nexus 10 这样的-xhdpi 设备是 320dpi。因此,Android 会在两个维度上将像素加倍,这样在-xhdpi 设备上看到的图像将与在-mdpi 设备上看到的相同图像的大小相同。 /p>
【讨论】:
res/drawable == res/drawable-mdpi
发生这种情况是因为 android 在应该使用 xhdpi 时使用了 xhdpi 中 mdpi 图像的大小,所以它正在放大它,为了在每个屏幕上使用正确的图像大小,设计一个图像适合 mdpi 屏幕作为其他分辨率的参考,使用模拟器查看它的外观,mdpi 屏幕约为 160dpi 而 xhdpi 约为 320dpi,然后使用此缩放因子根据您所需的分辨率对其进行缩放:
xhdpi 是 mdpi 的 2 倍尺寸 ldpi 是 mdpi 的 0.75 倍 hdpi 是 mdpi 的 1.5 倍
在设计布局时,此信息将根据开发者指南为您提供帮助:
xlarge 屏幕至少为 960dp x 720dp 大屏幕至少为 640dp x 480dp 普通屏幕至少为 470dp x 320dp 小屏幕至少为 426dp x 320dp
这个公式有助于从 px 转换为 dpi 或 dp: px = dp * (dpi / 160
【讨论】: