图标可帮助用户识别您的应用及其中的操作。您可以访问 Material 图标套件,并直接使用 Compose 将它们添加到您的应用中。要使用 Views 为您的应用创建自定义图标或应用图标,Android Studio 提供了 Image Asset Studio。
使用 Compose 在应用中添加图标
使用 Compose,您可以导入 Compose Material 库或 Compose Material 3 库来访问任何 Material 图标。然后使用 Icon
可组合项将图标添加到您的应用。Material 图标最适用于操作栏图标、标签页图标或通知图标。如需了解更多信息,请参阅Material 图标。
如果您需要创建自定义图标,例如应用启动器图标,请使用 Image Asset Studio。对于启动器图标,AndroidManifest.xml
文件必须引用 mipmap/
位置。Image Asset Studio 会自动添加此代码。以下清单文件代码引用了 mipmap/
目录中的 ic_launcher
图标
<application android:name="ApplicationTitle" android:label="@string/app_label" android:icon="@mipmap/ic_launcher" >
关于 Image Asset Studio
Android Studio 包含一个名为 Image Asset Studio 的工具,可帮助您从素材图标、自定义图片和文本字符串生成自己的应用图标。它会为您的应用支持的每种像素密度生成一套具有适当分辨率的图标。Image Asset Studio 会将新生成的图标放置在您项目中 res/
目录下的特定密度文件夹中。在运行时,Android 会根据应用运行设备的屏幕密度使用适当的资源。
Image Asset Studio 帮助您生成以下图标类型
- 启动器图标
- 操作栏和标签页图标
- 通知图标
以下各节描述了您可以创建的图标类型以及可以使用的图像和文本输入。
自适应和旧版启动器图标
启动器图标是向用户表示您的应用的图形。它可以
- 显示在设备上已安装应用列表和主屏幕上。
- 表示您应用的快捷方式(例如,打开联系人详细信息的联系人快捷方式图标)。
- 被启动器应用使用。
- 帮助用户在 Google Play 上找到您的应用。
自适应启动器图标可以在不同的设备型号上以各种形状显示,并且在 Android 8.0(API 级别 26)及更高版本中可用。Android Studio 3.0 引入了使用 Image Asset Studio 创建自适应图标的支持。Image Asset Studio 会生成圆形、圆角方形、圆角矩形和方形自适应图标的预览,以及图标的完整出血预览。Image Asset Studio 还会生成图标的旧版、圆形和 Google Play 商店预览。旧版启动器图标是表示您的应用在设备主屏幕和启动器窗口中的图形。旧版启动器图标适用于运行 Android 7.1(API 级别 25)或更低版本的设备,这些设备不支持自适应图标,并且不会在不同设备型号上显示为不同的形状。
Image Asset Studio 会将图标放置在 res/mipmap-density/
目录中的适当位置。它还会创建一张 512 x 512 像素的图像,适用于 Google Play 商店。
即使您支持较旧的 Android 版本,我们也建议您为启动器图标使用 Material Design 样式。
如需了解更多信息,请参阅自适应启动器图标和产品图标 - Material Design。
操作栏和标签页图标
操作栏图标是放置在操作栏中并表示单个操作项的图形元素。如需了解更多信息,请参阅添加和处理操作、应用栏 - Material Design 和操作栏设计。
标签页图标是用于表示多标签界面中单个标签页的图形元素。每个标签页图标都有两种状态:未选中和选中。如需了解更多信息,请参阅使用标签页创建滑动视图和标签页 - Material Design。
Image Asset Studio 会将图标放置在 res/drawable-density/
目录中的适当位置。
即使您支持较旧的 Android 版本,我们也建议您为操作栏和标签页图标使用 Material Design 样式。使用 appcompat
和其他支持库,将您的 Material Design UI 交付给较旧的平台版本。
作为 Image Asset Studio 的替代方案,您可以使用矢量资产工作室来创建操作栏和标签页图标。矢量可绘制对象适用于简单图标,并且可以减小应用的大小。
通知图标
通知是您可以在应用正常 UI 之外向用户显示的消息。Image Asset Studio 会将通知图标放置在 res/drawable-density/
目录中的适当位置
- 适用于 Android 2.2(API 级别 8)及更低版本的图标放置在
res/drawable-density/
目录中。 - 适用于 Android 2.3 到 2.3.7(API 级别 9 到 10)的图标放置在
res/drawable-density-v9/
目录中。 - 适用于 Android 3(API 级别 11)及更高版本的图标放置在
res/drawable-density-v11/
目录中。
如果您的应用支持 Android 2.3 到 2.3.7(API 级别 9 到 10),Image Asset Studio 会生成您的图标的灰色版本。更高版本的 Android 会使用 Image Asset Studio 生成的白色图标。
如需了解更多信息,请参阅通知;通知 Material Design;通知,Android 5.0 更改;通知,Android 4.4 及更低版本;以及状态栏图标,Android 3.0 及更低版本。
剪贴画
Image Asset Studio 让您轻松导入 VectorDrawable 和 PNG 格式的 Google Material 图标:只需从对话框中选择一个图标即可。如需了解更多信息,请参阅Material 图标。
图像
您可以导入自己的图像并针对图标类型进行调整。Image Asset Studio 支持以下文件类型:PNG(推荐)、JPG(可接受)和 GIF(不推荐)。
文本字符串
Image Asset Studio 允许您以各种字体输入文本字符串,并将其放置在图标上。它会将基于文本的图标转换为不同密度的 PNG 文件。您可以使用计算机上安装的字体。
运行 Image Asset Studio
要启动 Image Asset Studio,请按以下步骤操作
- 在项目窗口中,选择Android 视图。
- 右键点击 res 文件夹,然后选择 New > Image Asset。
- 通过以下步骤继续操作
- 创建自适应和旧版启动器图标。
- 创建操作栏或标签页图标。
- 创建通知图标。
创建自适应和旧版启动器图标
在您打开 Image Asset Studio 后,可以通过以下步骤添加自适应和旧版图标
- 在图标类型字段中,选择启动器图标(自适应和旧版)。
- 在前景层标签页中,选择资产类型,然后在下面的字段中指定资产
- 选择图像以指定图像文件的路径。
- 选择剪贴画以指定来自Material Design 图标集的图像。
- 选择文本以指定文本字符串并选择字体。
- 在背景层标签页中,选择资产类型,然后在下面的字段中指定资产。您可以选择颜色或指定要用作背景层的图像。
- 在选项标签页中,查看默认设置并确认您要生成旧版、圆形和 Google Play 商店图标。
- (可选)更改前景层和背景层标签页的名称和显示设置
- 名称 - 如果您不想使用默认名称,请键入一个新名称。如果该资源名称已存在于项目中(如向导底部错误所示),则会被覆盖。名称只能包含小写字符、下划线和数字。
- 修剪 - 要调整源资产中图标图形和边框之间的边距,请选择是。此操作会删除透明空间,同时保留纵横比。要保持源资产不变,请选择否。
- 颜色 - 要更改剪贴画或文本图标的颜色,请点击该字段。在选择颜色对话框中,指定颜色,然后点击选择。新值将显示在该字段中。
- 调整大小 - 使用滑块以百分比形式指定缩放因子,以调整图像、剪贴画或文本图标的大小。当您指定颜色资产类型时,此控件对背景层禁用。
- 点击下一步。
- (可选)更改资源目录:选择要添加图像资产的资源源集:src/main/res、src/debug/res、src/release/res 或自定义源集。主源集适用于所有构建变体,包括调试版和发布版。调试版和发布版源集会覆盖主源集并应用于一个构建版本。调试版源集仅用于调试。要定义新的源集,请选择文件 > 项目结构 > 应用 > 构建类型。例如,您可以定义一个测试版源集并创建一个图标版本,其中在右下角包含文本“BETA”。如需了解更多信息,请参阅配置构建变体。
- 点击完成。Image Asset Studio 会将图像添加到不同密度的 mipmap 文件夹中。
预览主题应用图标
Android Studio 允许您预览主题应用图标并测试它如何适应用户壁纸的颜色。要预览主题应用图标,请打开定义图标的 launcher.xml
文件,然后使用工具栏上的系统 UI 模式选择器切换壁纸,查看图标的反应。
要了解有关如何创建主题应用图标的更多信息,请参阅自适应图标。


创建操作栏或标签页图标
在您打开 Image Asset Studio 后,可以通过以下步骤添加操作栏或标签页图标
- 在图标类型字段中,选择操作栏和标签页图标。
- 选择资产类型,然后在下面的字段中指定资产
- 在剪贴画字段中,点击按钮。
- 在路径字段中,指定图像的路径和文件名。点击...以使用对话框。
- 在文本字段中,键入文本字符串并选择字体。
- (可选)更改名称和显示选项
- 名称 - 如果您不想使用默认名称,请键入一个新名称。如果该资源名称已存在于项目中(如向导底部错误所示),则会被覆盖。名称只能包含小写字符、下划线和数字。
- 修剪 - 要调整源资产中图标图形和边框之间的边距,请选择是。此操作会删除透明空间,同时保留纵横比。要保持源资产不变,请选择否。
- 内边距 - 如果您想调整源资产在所有四个侧面的内边距,请移动滑块。选择介于 -10% 和 50% 之间的值。如果您同时选择修剪,则先进行修剪操作。
- 主题 - 选择HOLO_LIGHT 或 HOLO_DARK。或者,要在选择颜色对话框中指定颜色,请选择自定义,然后点击自定义颜色字段。
Image Asset Studio 会在透明方形内创建图标,因此边缘会有一些内边距。内边距为标准阴影图标效果提供了足够的空间。
- 点击下一步。
- (可选)更改资源目录
- 资源目录 - 选择要添加图像资产的资源源集:src/main/res、src/debug/res、src/release/res 或用户定义的源集。主源集适用于所有构建变体,包括调试版和发布版。调试版和发布版源集会覆盖主源集并应用于一个构建版本。调试版源集仅用于调试。要定义新的源集,请选择文件 > 项目结构 > 应用 > 构建类型。例如,您可以定义一个测试版源集并创建一个图标版本,其中在右下角包含文本“BETA”。如需了解更多信息,请参阅配置构建变体。
- 点击完成。
在选择图标对话框中,选择一个Material 图标,然后点击确定。
图标显示在右侧的源资产区域以及向导底部的预览区域。
输出目录区域显示图像及其在项目窗口的项目文件视图中将出现的文件夹。
Image Asset Studio 会将图像添加到不同密度的 drawable 文件夹中。
创建通知图标
在您打开 Image Asset Studio 后,可以通过以下步骤添加通知图标
- 在图标类型字段中,选择通知图标。
- 选择资产类型,然后在下面的字段中指定资产
- 在剪贴画字段中,点击按钮。
- 在路径字段中,指定图像的路径和文件名。点击...以使用对话框。
- 在文本字段中,键入文本字符串并选择字体。
- (可选)更改名称和显示选项
- 名称 - 如果您不想使用默认名称,请键入一个新名称。如果该资源名称已存在于项目中(如向导底部错误所示),则会被覆盖。名称只能包含小写字符、下划线和数字。
- 修剪 - 要调整源资产中图标图形和边框之间的边距,请选择是。此操作会删除透明空间,同时保留纵横比。要保持源资产不变,请选择否。
- 内边距 - 如果您想调整源资产在所有四个侧面的内边距,请移动滑块。选择介于 -10% 和 50% 之间的值。如果您同时选择修剪,则先进行修剪操作。
Image Asset Studio 会在透明方形内创建图标,因此边缘会有一些内边距。内边距为标准阴影图标效果提供了足够的空间。
- 点击下一步。
- (可选)更改资源目录
- 资源目录 - 选择要添加图像资产的资源源集:src/main/res、src/debug/res、src/release/res 或用户定义的源集。主源集适用于所有构建变体,包括调试版和发布版。调试版和发布版源集会覆盖主源集并应用于一个构建版本。调试版源集仅用于调试。要定义新的源集,请选择文件 > 项目结构 > 应用 > 构建类型。例如,您可以定义一个测试版源集并创建一个图标版本,其中在右下角包含文本“BETA”。如需了解更多信息,请参阅配置构建变体。
- 点击完成。
在选择图标对话框中,选择一个Material 图标,然后点击确定。
图标显示在右侧的源资产区域以及向导底部的预览区域。
输出目录区域显示图像及其在项目窗口的项目文件视图中将出现的文件夹。
Image Asset Studio 会将图像添加到不同密度和版本的 drawable 文件夹中。
在代码中使用 Views 引用图像资源
您通常可以在代码中以通用方式引用图像资源,当您的应用运行时,相应的图像会根据设备自动显示
- 在大多数情况下,您可以在 XML 代码中将图像资源引用为
@drawable
,或者在 Java 代码中引用为Drawable
。 - 如果您的应用使用支持库,您可以在 XML 代码中使用
app:srcCompat
语句引用图像资源。例如
例如,以下布局 XML 代码在 ImageView 中显示可绘制对象
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage" />
以下 Java 代码将图像检索为 Drawable
Kotlin
val drawable = resources.getDrawable(R.drawable.myimage, theme)
Java
Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.myimage, getTheme());
此 getResources()
方法位于 Context
类中,该类适用于 UI 对象,例如 Activity、Fragment、布局、视图等。
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" app:srcCompat="@drawable/myimage" />
您只能从主线程访问图像资源。
在您的项目 res/
目录中拥有图像资源后,您可以使用其资源 ID 从 Java 代码或 XML 布局中引用它。以下 Java 代码将 ImageView 设置为使用 drawable/myimage.png
资源
Kotlin
findViewById<ImageView>(R.id.myimageview).apply { setImageResource(R.drawable.myimage) }
Java
ImageView imageView = (ImageView) findViewById(R.id.myimageview); imageView.setImageResource(R.drawable.myimage);
如需了解更多信息,请参阅访问资源。
从项目中删除图标
要从项目中移除图标
- 在项目窗口中,选择Android 视图。
- 展开启动器图标的 res/mipmap 文件夹,或展开其他类型图标的 res/drawable 文件夹。
- 找到包含您要删除的图标名称的子文件夹。
- 选择文件夹并按 Delete 键。
- (可选)选择查找图标在项目中何处使用的选项,然后点击确定。
- 选择构建 > 清理项目。
- 如果需要,更正由于代码中引用该资源的部分而导致的任何剩余错误。
此文件夹包含不同密度的图标。
或者,选择编辑 > 删除。或者右键点击文件并选择删除。
出现安全删除对话框。
Android Studio 会从项目和驱动器中删除文件。但是,如果您选择搜索项目中使用这些文件的位置并找到一些用法,您可以查看它们并决定是否删除它们。您必须删除或替换这些引用才能成功编译您的项目。
Android Studio 会删除与已删除图像资源对应的任何生成图像文件。它会从项目和驱动器中删除它们。
Android Studio 会在您的代码中突出显示这些错误。当您从代码中删除所有引用后,您可以再次成功构建您的项目。