mipmap-mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi

作者:vkvi 来源:ITPOW(原创) 日期:2018-3-31

在安卓开发的时候,app\src\main\res 文件夹下面有文件夹:mipmap-mdpi、mipmap-hdpi、mipmap-xhdpi、mipmap-xxhdpi、mipmap-xxxhdpi。

分别代表不同 dpi 屏幕所使用的图片。

dpi

Dots Per Inch,即每英寸点数。也就是屏幕的细腻程度,我们知道以前的手机,拿在手上都可以看得出屏幕的颗粒感,这就是因为 dpi 太小,而现在的手机,一般人真感觉不出颗粒感,这就是因为 dpi 够大。

理论上来说 dpi 是跟分辨率没关系的,分辨率是指总共有多少个点。不过实际上因为制造的原因,这二者还是有一定关系的,一般来说分辨率大的,dpi 都比较大,否则我们可以想象,如果 20 年前那种黑白液晶屏,要做到 1920 像素,恐怕要做到电视那么大吧,这哪里是手机啊。当然这只是一个相对趋势,不是必然的。

安卓根据当前环境自动匹配不同文件夹下的图片

如果手机在高 dpi 上面运行,比如 xhdpi 上面运行。

  • 它首先从与自己 dpi 匹配的 mipmap-xhdpi 文件夹下的图片。
  • 如果 mipmap-xhdpi 下面的图片不存在,它就从更高 dpi 的文件夹下面找。
  • 如果更高 dpi 的文件夹下面找不到,就从更低的 dpi 文件夹下面找。

这个我们在安卓开发的时候就可以测试:

Android Studio 界面设计

一般来说,现在新手机 dpi 都比较高,考虑到老手机仍然还在使用,我个人认为 hdpi、xhdpi、xxhdpi 三个就能够覆盖很多很多的手机了。

只有使用对应 hdpi 文件夹下面的图片,才会获得准确的显示像素。

如果我们把 200 x 200 图片放到 mipmap-xxxhdpi 文件夹下(其他文件夹下均不放),当在 xxxhdpi 手机上查看时,它是真实的 200 像素

  • 但是在 xxhdpi 手机上查看时,它就要比 200 像素少点
  • xhdpi 手机上查看时,少得更多
  • hdpi 手机上查看时,少得更多更多

反过来,如果是只放到 mipmap-hdpi 文件夹下(其他文件夹下均不放),当在 hdpi 手机上查看时,它也是真实的 200 像素

  • 但是在 xhdpi 手机上查看时,它就要比 200 像素多点

  • xxhdpi 手机上查看时,多得更多

  • xxxdpi 手机上查看时,多得更多更多

也就是说:手机 dpi 离文件夹 dpi 越远,差距越大。高 dpi 手机用低 dpi 文件夹图片,结果是像素变多;低 dpi 手机用高 dpi 文件夹图片,结果是像素变少。(安卓是这样想的:既然你是将图片放到低 dpi 文件夹下,肯定是想物理尺寸显示得大一点,那么在我这个高 dpi 手机上,肯定只有增大像素才能保证你的物理尺寸)。

那么到底差多少呢?

hdpi、xdpi、xxdpi 之间的比例是:6:8:12,也就是说 hdpi 的 200 像素图片,如果是在 xxdpi 手机上显示,它会变成 400 像素。

dpi 显示效果

如上图,蓝色块为 200 像素,而黄色块本是 mipmap-hdpi 文件夹下 200 像素的图片,可是当在 xxhdpi 手机上显示时,它就撑大了一倍,验证了我们的说法。

图片的“像素/英寸”不影响我们前面说的

Photoshop 分辨率

在 Photoshop 中新建图片时,有一个“像素/英寸”,这个默认是 72,我们改了它,不影响前面的理论。(另外请注意:Photoshop 将这里称为分辨率,跟我们平常说的那种 1920x1080 分辨率是两回事。)

相关文章