Android 将 mdpi (160 像素/英寸) 视为基本密度。所以对于mdpi 设备,1 dp = 1 像素。在更高的密度下,每英寸有更多的像素(hdpi 为 240,xhdpi 为 320)。
Android 本身的自动缩放:
Android 试图让图形图像在屏幕上占据相同的物理尺寸,而不管设备像素密度如何。因此,如果它找到的只是一个 mdpi 资源,并且设备是 hdpi,它会将图形缩放 240/160 = 150%,并将 xhdpi 的图形大小加倍。
使用不同版本的图形:
如果您不希望这种自动缩放(这会使图形看起来很差),您可以简单地提供您自己的图形资源版本以用于更高的密度。这些图形的大小应与 Android 缩放 mdpi 资源的大小相同。
注意:存储在图像文件中的像素/英寸与此无关。这完全取决于您将图形文件放在项目资源目录中的位置。任何放置在 res/drawable 中的图形都被假定为适合 mdpi 显示的大小,就像放置在 res/drawable-mdpi 中的图形一样。它在 res/drawable-hdpi 中找到的图像文件被假定为适合 hdpi 显示等。当您的程序在特定设备上运行时,Android 将首先查找与该设备的显示密度匹配的图形。如果它没有找到一个,而是找到一个不同密度的,它将使用它并根据上述规则自动缩放图像。
由于 ldpi、mdpi 和 hdpi 指的是屏幕密度,这意味着一英寸可以容纳多少像素。
它们之间的像素比率为:
ldpi = 1:0.75
mdpi = 1:1
hdpi = 1:1.5
xhdpi = 1:2
xxhdpi = 1:3
所以让我们拍摄一张大小约为 100X100 的图像:
for mdpi it should be 100X100
for ldpi it should be 75X75
for hdpi it should be 150X150
for xhdpi it should be 200X200
for xxhdpi it should be 300X300
这样,对于尺寸相同但 DPI 不同的屏幕,所有图像在屏幕上看起来都是相同的尺寸。