res / drawable和res / drawable-xhdpi中的相同图像显示为不同的大小

时间:2014-04-07 15:27:18

标签: android android-layout

我有一张图片,rectangle.png。它的尺寸是75x197。它位于res / drawable和res / drawable-xhdpi中。它在网格布局中多次显示(截图来自Nexus-10,xhdpi设备):

Screenshot from Nexus 10 - xhdpi

如果我从res / drawable-xhdpi中删除图像文件,从而导致布局使用相同的图像,但在res / drawable中,屏幕更改为:

Screenshot from Nexus 10 - res/drawable - something wrong

为什么会这样?

2 个答案:

答案 0 :(得分:4)

  

为什么会这样?

对于位图,

res/drawable/相当于res/drawable-mdpi/。 Android认为您的图片设计用于-mdpi屏幕,即160dpi。与Nexus 10一样,-xhdpi设备为320dpi。因此,Android会在两个维度上加倍像素,以便-xhdpi设备上显示的图像与-mdpi设备上相同的图像大小相同

答案 1 :(得分:2)

发生这种情况是因为android在xhdpi中使用mdpi图像的大小时它应该使用xhdpi,所以它要缩放它,为了在每个屏幕上使用正确的图像大小,设计一个图像适合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