我有一张图片,rectangle.png。它的尺寸是75x197。它位于res / drawable和res / drawable-xhdpi中。它在网格布局中多次显示(截图来自Nexus-10,xhdpi设备):
如果我从res / drawable-xhdpi中删除图像文件,从而导致布局使用相同的图像,但在res / drawable中,屏幕更改为:
为什么会这样?
答案 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