1.谷歌官方的说法
我觉得是这样的:
mipmap支持多尺度缩放效果很好,比如一个200*200的图片缩放,如果我们使用mipmap那么系统会根据当前缩放范围选择mipmap里面恰当的图片,而不是想drawable目录下是根据当前设备的屏幕密度选择恰当的图片。如果一个imageview有缩放动画,使用drawable下的图片,会一直使用一张,来缩放图片实现imageview缩放动画,如果使用mipmap会根据缩放程度自动选择比当前分辨率大而又最接近当前分辨率的图片来做缩放处理,这样就实现了google官方文档中描述的更好视觉效果,更高效率的目的。这也和mipmap这个技术的本身含义吻合,除非google乱取名字。而google文档里面说
laucher icon使用mipmap我认为是因为laucher icon在laucher app里面可能有动画,或者有的laucher app使用的laucher icon分辨率比google规定的大,导致使用drawable下面的图片会放大,而显示效果不好。实际应用可以这样:
mipmap只是用来放启动图标的(原文:mipmap/Forapp launcher icons.)。
而PNG、JPEG、GIF、点九图、XML,还是全部放在drawable.
2. mipmap中不能存放9patch图片
3. 在使用drawable需要注意的是
根据android的开发建议,我们应该在准备图片资源的时候尽量给每种密度都准备一套,这样可以使屏幕的适配性达到最好,这也是因为我们android机型众多的一个基本要求。但是实际情况一般是ui只会给你一套图片:根据我们上面的测试,可以发现当一张图片放在高密度的包下,图片会被缩小,除了看着小点好像还没什么,但是当在低密度的包下,图片的放大必然会引起占用更多的内存。因为图片变大了,占用的像素点也就更多了,而这也必然会导致内存的占用增加。我相信很多在职开发人员都有遇到,就是当你的项目慢慢变大后,你引用一张hdpi像素的照片时,都极有可能发生OOM,但如果放在高密度的xxhdp或者xxxhdpi的时候,这样的情况就不会发生。我们最佳的放置应该在高密度的文件夹下,而目前市面最合适的是xxhdpi。