当前位置: 首页 > 知识库问答 >
问题:

Mipmap图标绘图

申炳
2023-03-14

自从Android4.3(Jelly Bean)以来,我们现在可以使用res/mipmap文件夹来存储“mipmap”图像。

例如,Chrome For Android将图标存储在这些文件夹中,而不是更普通的res/drawable文件夹。

这些mipmap图像与其他熟悉的可绘制图像有何不同?

我看到在我的清单中,我们使用了@mipmap/限定符,而不是@drawable/,这对于资源文件夹名称是有意义的:

<activity
    android:name=".MipmapDemp"
    android:icon="@mipmap/ic_launcher" />

Android 4.3 API文档有以下内容:

使用mipmap作为您的位图或drawable的源是提供高质量图像和各种图像比例的简单方法,如果您希望您的图像在动画期间被缩放,这会特别有用。

Android4.2(API level 17)在位图类中添加了对mipmap的支持--当您提供了mipmap源代码并启用了setHasMipMap()时,Android会在您的位图中交换mip图像。现在在Android4.3中,您也可以为BitmapDrawable对象启用mipmaps,方法是提供mipmap资产并在位图资源文件中设置Android:mipmap属性,或者调用hasMipMap()。

我看不出有什么能帮助我理解的。

XML位图资源具有android:mipmap属性:

布尔的。启用或禁用mipmap提示。有关更多信息,请参见setHasMipMap()。默认值为false。

就我所见,这不适用于启动器图标。

这个问题是在谷歌群组上提出的(资源名称“mipmap”的目的?!),对此Romain Guy回答道:

提供通常需要计算的较大分辨率的图像是很有用的(例如,在mdpi设备上,Launcher可能需要较大的hdpi图标来显示大型应用程序快捷方式。)

我觉得这几乎是有意义的,但不完全是。

我还是倾向于Randy Sugianto的后续报道:

这样做有什么好处?有没有什么指南如何使用mipmaps,可能是为了更好的发射图标?

当然,维基百科有一个“mipmap”的页面,它指的是1983年发明的一种更古老的技术,我不能很好地与目前的Android实现联系起来。

这些天,我们是否应该将所有的应用图标存储在res/mipmap文件夹中,这些mipmap图像的指导原则是什么?

更新#1

这里有一篇博客文章试图解释一下。

  • Android 4.3中Drawable的MIPMapping

但在那篇博文中使用的图像显示了看起来像一个文件中包含许多标识的内容。这不是我在Chrome的mipmap文件夹中看到的。

Chrome的mipmap-hdpi文件夹包含三个图像。一个是Chrome标志,它自己。

奇怪的是,它是72x72,而不是我希望看到的48x48。

也许这就是我们所要做的--我们只需要在mipmap文件夹中保留更大的图标?

更新#2

Android Developers 2014年10月23日的博客文章再次证实了使用mipmap文件夹作为应用图标的想法:

  • 使您的应用程序为Nexus 6和Nexus 9做好准备

在谈到Nexus 6的屏幕密度时,笔者写道:

最好的做法是把你的应用图标放在mipmap文件夹(而不是drawable-folders)中,因为它们的分辨率与设备当前的密度不同。例如,xxxhdpi应用图标可用于xxhdpi设备的启动器上。

更新#3

请注意,Android Studio在mipmap...文件夹中创建ic_launcher.png图标,而不是Eclipse用于创建这些图标的drawable...文件夹。

共有2个答案

孙思源
2023-03-14

似乎谷歌已经更新了他们的文档,因为所有这些答案,所以希望这将帮助其他人在未来:)我刚刚遇到这个问题,在创建一个新的(新的新的)项目。

TL;DR:提取物可以作为特定于DP的资源优化的一部分被剥离。Mipmaps将不会被剥离。

不同设备上的不同主屏幕启动器应用程序以不同的分辨率显示应用程序启动器图标。当应用程序资源优化技术移除未使用的屏幕密度的资源时,启动器图标可能会看起来模糊,因为启动器应用程序必须升级一个较低分辨率的图标以供显示。为了避免这些显示问题,应用程序应该将mipmap/资源文件夹用于启动程序图标。Android系统保留了这些资源,而不考虑密度剥离,并确保启动器应用程序可以挑选出分辨率最好的图标进行显示。

(摘自http://developer.android.com/tools/projects/index.html#mipmap)

沈嘉瑞
2023-03-14

MIPMAP有两种不同的用途:

>

  • 用于构建特定密度的APK时的发射器图标。一些开发人员为每个密度构建单独的APK,以保持APK的大小。然而,一些启动器(随一些设备一起提供,或者在Play Store上提供)使用比标准48DP更大的图标大小。Launchers使用getDrawableForDensity并在需要时向下缩放,而不是向上缩放,因此图标是高质量的。例如,在hdpi平板上,启动程序可能会加载xhdpi图标。通过将启动器图标放置在mipmap-xhdpi目录中,它不会像为hdpi设备构建APK时的drawable-xhdpi目录那样被剥离。如果您正在为所有设备构建一个APK,那么这并不重要,因为启动器可以访问所需密度的可提取资源。

    来自4.3的实际mipmap API。这个我没用过,不熟悉。Android开源项目启动程序没有使用它,我也不知道有任何其他启动程序使用它。

  •  类似资料:
    • 我正面临着一个奇怪的问题,试图将9个补丁绘图放入新的android studio mipmap目录。我已经将所有图像放入指定的文件夹,就像我以前使用drawable一样,但当我尝试将其包含在项目中时,它会说 无法解析符号@mipmap/myfile 我认为它不能解析符号,因为“真实”文件名有.9,但是点不能用于定义可绘制。我试过了,但没有成功 是否有人面临同样的问题?目前,我已经添加了drawab

    • 由于通知图标没有一个单独的图像,我有点不知道如何做到这一点。 谢谢

    • 我尝试了以下方法: 但它似乎不起作用我尝试将它命名为drawables.xml和mipmaps.xml,似乎它总是试图从drawable而不是mipmap文件夹引用它?

    • 添加地标 添加地标        点击菜单栏或底下快捷工具栏中的“添加地标”按钮,按照弹出的对话框,在当前地图的中心添加一个地标来标注位置。        绘制完成后弹出属性对话框,可在“说明”栏里查看并修改对于该地标的说明。        可在“空间信息”栏里填写地标的定位信息,有小数格式、度分秒格式、度分格式三种输入方式。        可在“样式”栏里修改图标风格(图标样式、颜色、大小、透明

    • 添加地标 添加地标        点击菜单栏或底下快捷工具栏中的“添加地标”按钮,按照弹出的对话框,在当前地图的中心添加一个地标来标注位置。        绘制完成后弹出属性对话框,可在“说明”栏里查看并修改对于该地标的说明。        可在“空间信息”栏里填写地标的定位信息,有小数格式、度分秒格式、度分格式三种输入方式。        可在“样式”栏里修改图标风格(图标样式、颜色、大小、透明

    • 我正在使用Android Asset Studio生成我的启动器图标,我看到现在的输出是创建mipmap文件夹,而不是可绘制文件夹。 因为从Android4.2开始就添加了mipmap支持,而我的应用程序的目标是ICS4.0.3(API 15)。使用它们安全吗?然后在drawables文件夹中没有任何ic_launcher图标?