Android用到的图片资源一般指三种:png/jpg等位图文体,.9文件,selector xml文件,在之前的开发中,都放在drawable目录下,但使用最新的Android Studio时,我们会发现所有的登录icon被默认放在了mipmap目录下,并且在不同子目录下放着不同尺寸的图片。是不是在新版本中,所有的位图资源都移到mipmap目录下了呢,我们去官方开发指南中可以看到,drawable和mipmap目录使用解释如下:
也就是说,除了登录使用的icons放在mipmap目录下,其他icon图片、.9图片及xml文件都还是放在drawable目录下。
但是,我个人觉得如下方式更方便:
1).9文件及xml文件放在drawable目录;
2)所有的icon文件放在mipmap目录。
为什么这样呢?因为xml文件和.9文件本身都是带有缩放功能,可以自适应不同屏幕,而icon图片一般为了适应不同屏幕,可能需要放在不同的子文件夹下,如果都放在drawable目录下,会先的很混乱,而把icon图片放在mipmap目录下,会显得很清晰。
另外,最新版本的布局layout文件调用资源时,已经可以默认直接调用mipmap目录的文件了。app在加载时,会自动调用相应尺寸的位图,如果对应目录下没有,则会从xxxhdpi目录向下查找。
此外,还需注意的是,同一个图片若放在不同目录下,最终在手机上显示效果是不一样的,为什么呢?
因为对于mipmap目录下的每一张位图,系统会计算出图片的独立像素大小,比如一张36*36px的图片,如果放在mdpi子目录下,因为该目录对应的dpi是160,缩放因子是1.0,所以系统计算出的独立像素大小也为36*36dp;假如把该图片放在hdpi目录下,该目录对应的dpi是240,缩放因子是1.5,系统计算出该图片的独立像素就是24*24dp。换算成独立像素为单位的图片,使用起来就可以很好的自适应各种尺寸了。
那这样看来,只需要准备一套图片,就可以满足不同尺寸需要。使用哪种尺寸呢,常见的有ldpi、mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi,缩放因子分别是0.75,1,1.5,2,3。如果使用较小的尺寸,当在分辨率较高的手机上使用,图片放大倍数太高,肯定不清晰;如果使用较大的尺寸,肯定又会占用太多的资源,安装包较大,加载后占用内存也会比较大。综合考虑,选择缩放因子为2.0的尺寸比较合适。这时,你的app布局需要多大dp的图片,就让UI裁成2倍px的图片,放入mipmap-xhdpi目录下,就可以很好的满足各种尺寸屏幕所需了!