res/mipmap
文件夹来存储“mipmap”图像。例如,Chrome for Android将其图标存储在这些文件夹中,而不是更常规的res/drawable
文件夹。那么这些mipmap图像与其他熟悉的drawable图像有什么不同呢?我发现在我的清单中,我们使用@mipmap/
限定符,而不是@drawable/
,这在资源文件夹名称上是有意义的。<activity
android:name=".MipmapDemp"
android:icon="@mipmap/ic_launcher" />
参考资料:
Android 4.3 APIs文档如下所述:
使用mipmap作为位图或可绘制对象的源是提供高质量图像和各种图像比例的简单方法,如果您希望在动画期间缩放图像,则这尤其有用。
Android 4.2(API级别17)在Bitmap类中添加了对mipmaps的支持-当您提供了mipmap源并启用setHasMipMap()时,Android会交换Bitmap中的mip图像。现在,在Android 4.3中,您也可以通过在位图资源文件中提供mipmap资产并设置android:mipMap属性,或者调用hasMipMap()来为BitmapDrawable对象启用mipmaps。
我没有看到任何有助于我理解的内容。
XML位图资源具有一个android:mipMap
属性:
布尔值。启用或禁用mipmap提示。有关更多信息,请参见setHasMipMap()。默认值为false。
据我所见,这不适用于启动器图标。
这个问题在Google Groups上被提出(资源名称“mipmap”的目的是什么?!),Romain Guy回答道:
提供一个比通常计算得到的更大分辨率的图像是有用的(例如,在mdpi设备上,启动器可能希望显示大的应用程序快捷方式的更大的hdpi图标)。
我觉得这几乎解释清楚了,但还是有点模糊。
我还倾向于采用Randy Sugianto的跟进建议:
这有什么优势吗?是否有指南可以使用mipmaps,也许是为了更好的启动器图标?
当然,维基百科有一个"Mipmap"的页面,它指的是一种在1983年发明的旧技术,我无法与当前的Android实现联系起来。
最近我们应该把所有的应用程序图标存储在res/mipmap
文件夹中吗?如果是,这些mipmap图片的指南是什么?
更新 #1
这是一篇博客文章,试图对此进行解释。
但是,该博客文章中使用的图像显示出看起来像是一个文件中有许多标志的情况。这不是我在Chrome的mipmap文件夹中看到的。
Chrome的mipmap-hdpi
文件夹包含三个图像。其中一个是Chrome标志,单独存在。
更新 #2
2014年10月23日的Android Developers博客文章再次确认使用mipmap
文件夹作为应用程序图标的想法:
当谈到Nexus 6屏幕密度时,作者写道:
最好的做法是将您的应用程序图标放置在mipmap文件夹中(而不是drawable文件夹),因为它们可用于不同于设备当前密度的分辨率。例如,xxxhdpi应用程序图标可以用于xxhdpi设备的启动器。
更新 #3
请注意,Android Studio会在mipmap...
文件夹中创建ic_launcher.png
图标,而不是Eclipse曾经创建的drawable...
文件夹。
drawable-XXX
和mipmap-XXX
文件夹的使用差异:启动器图标与其他资源不同,因为在用户的启动器中可能显示更高分辨率的图标。如果该高分辨率图像已从您的可绘制文件夹中删除,则程序将自动缩放较低密度的图标。这可能会导致模糊的不美观的图标。 - winklerrr