在AndroidStudio上创建的项目中会包含有一个mipmap的文件夹,里面存放着app的ic_launcher图标,在Eclipse上这些图标是放置于drawble文件夹下的。那是不是app的所有icon都应放在mipmap中呢?
基本知识:
ldpi 0.75
mdpi 1 (安卓里面以160为标准)
hdpi 1.5
xhdpi 2.0
xxhdpi 3.0
xxxhdpi 4.0
像素密度: dpi
像素:px
独立像素:dp或dip
像素密度 = √{(长度像素数^2+宽度像素数^2)}/屏幕尺寸 ;即名屏幕每英寸所占的像素数。
dp = (dpi/160)*px (安卓里面以160为标准)
· 1.相同屏幕大小,如5英寸,160dpi即每英寸有160个像素,其1dp = 1px,此时160dp = 160px,屏幕所占尺寸为1英寸;320dpi即每英寸有320个像素,其1dp = 2px,此时160dp = 320px,屏幕所占尺寸为1英寸;其它像素密度类比。
· 2.同一像素密度,如160dpi,不管在多少尺寸屏幕下,因为每一英寸所占像素数相同,且1dp = 1px,故不管多少dp,其所占像素数相同,所占物理尺寸也相同。
· Logo标准:48x48,即mdpi放48x48的,ldpi, hdpi, xhdpi,xxhdpi, xxxhdpi相对应为36x36, 72x72, 96x96,144x144, 192x192
· 启动图标准:320x480,即mdpi放320x480的,ldpi, hdpi, xhdpi, xxhdpi, xxxhdpi相对应为 240x320, 480x800, 720x1280, 1080x1920
百度:
MIP map技术帮助避免了不想要的锯齿边缘(称为锯齿状图形)在图像中出现,这种锯齿状图形可能是由于在不同分辨率下使用bitmap图像产生的。
google:
为了加快渲染速度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为 MIP map或者 mipmap。
度娘和wiki的说明来看,mipmap确实可以加快渲染速度,而且是为了解决在不同分辨率下使用bitmap产生的问题,这就不难理解Launcher图标为什么在mipmap目录下了。在Launcher界面,图标很可能因为选中效果等动画进行放大缩小,因此可以使用mipmap来让动画更加丝滑流畅。
AndroidDeveloper上 android 4.3关于Mipmap的说明:
Mipmapping for drawables
Using a mipmap as the source for yourbitmap or drawable is a simple way to provide a quality image and various imagescales, which can be particularly useful if you expect your image to be scaledduring an animation.
大意就是如果期望图像在动画中缩放,使用mipmap作为bitmap或者drawable的来源是一个提供有质量的多尺寸规格的图片的简单办法。
StackOverFlow
在stackoverflow上看了相关的讨论后,觉得这位大哥解释的比较在理,更容易理解
所以,最开始的两种说法都存在一定问题,既不是把所有图标都放置在mipmap下,也不是说mipmap只能够放Launcher图标。如果图标有固定的尺寸,不需要更改,那么drawable更加适合。如果需要变大变小变大变小的,有动画的,放在mipmap中能有更高的质量。