创建应用图标

图标可帮助您的用户识别您的应用及其内部操作。您可以访问 Material 图标套件,并使用 Compose 直接将它们添加到您的应用中。要使用 Views 创建自定义图标或应用图标,Android Studio 提供了图像资源工作室。

使用 Compose 在应用中添加图标

使用 Compose,您可以导入Compose Material 库Compose Material 3 库来访问任何 Material 图标。然后使用Icon 可组合函数将图标添加到您的应用中。Material 图标最常用于操作栏图标、标签图标或通知图标。更多信息,请参见Material 图标

如果您需要创建自定义图标(例如您的应用启动器图标),请使用图片资源工作室。对于启动器图标,AndroidManifest.xml 文件必须引用mipmap/ 位置。图片资源工作室会自动添加此代码。以下清单文件代码引用了mipmap/ 目录中的ic_launcher 图标

  <application android:name="ApplicationTitle"
            android:label="@string/app_label"
            android:icon="@mipmap/ic_launcher" >
  

关于图片资源工作室

Android Studio 包含一个名为图片资源工作室的工具,可帮助您从Material 图标、自定义图像和文本字符串生成您自己的应用图标。它会为您的应用支持的每个像素密度生成一组适当分辨率的图标。图片资源工作室会将新生成的图标放置在项目res/ 目录下的特定密度文件夹中。运行时,Android 会根据运行应用的设备的屏幕密度使用相应的资源。

图片资源工作室可帮助您生成以下类型的图标:

  • 启动器图标
  • 操作栏和标签图标
  • 通知图标

以下部分描述了您可以创建的图标类型以及您可以使用的图像和文本输入。

自适应和传统启动器图标

启动器图标是向用户展示您的应用的图形。它可以:

  • 显示在设备上安装的应用列表中以及主屏幕上。
  • 表示指向您应用的快捷方式(例如,打开联系人的详细信息的联系人快捷方式图标)。
  • 被启动器应用使用。
  • 帮助用户在 Google Play 上找到您的应用。

自适应启动器图标可以在不同的设备型号上显示为各种形状,并且在 Android 8.0(API 级别 26)及更高版本中可用。Android Studio 3.0 引入了使用图片资源工作室创建自适应图标的支持。图片资源工作室会生成自适应图标在圆形、方形、圆角矩形和正方形形状中的预览,以及图标的全出血预览。图片资源工作室还会生成图标的传统、圆形和 Google Play 商店预览。传统启动器图标是在设备主屏幕和启动器窗口中表示您的应用的图形。传统启动器图标适用于运行 Android 7.1(API 级别 25)或更低版本的设备(不支持自适应图标),并且不会在不同设备型号上显示为不同的形状。

图片资源工作室会将图标放置在res/mipmap-density/ 目录中的正确位置。它还会创建一个 512 x 512 像素的图像,适合 Google Play 商店。

我们建议您即使支持较旧的 Android 版本,也应使用 Material Design 风格的启动器图标。

更多信息,请参见自适应启动器图标产品图标 - Material Design

操作栏和标签图标

操作栏图标是放置在操作栏中的图形元素,表示各个操作项。更多信息,请参见添加和处理操作应用栏 - Material Design操作栏设计

标签图标是用于在多标签界面中表示各个标签的图形元素。每个标签图标都有两种状态:未选中和选中。更多信息,请参见使用标签创建滑动视图标签 - Material Design

图片资源工作室会将图标放置在res/drawable-density/ 目录中的正确位置。

我们建议您即使支持较旧的 Android 版本,也应使用 Material Design 风格的操作栏和标签图标。使用appcompat 和其他支持库 将您的 Material Design UI 提供给较旧的平台版本。

作为图片资源工作室的替代方案,您可以使用矢量资源工作室 创建操作栏和标签图标。矢量绘图适用于简单的图标,可以减小应用的大小。

通知图标

通知是在应用的常规 UI 之外可以向用户显示的消息。图片资源工作室会将通知图标放置在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),图片资源工作室会生成图标的灰色版本。较新的 Android 版本使用图片资源工作室生成的白色图标。

更多信息,请参见通知通知 Material Design通知,Android 5.0 更改通知,Android 4.4 及更低版本;以及状态栏图标,Android 3.0 及更低版本

剪贴画

图片资源工作室使您可以轻松地导入 VectorDrawable 和 PNG 格式的 Google Material 图标:只需从对话框中选择一个图标即可。更多信息,请参见Material 图标

图像

您可以导入您自己的图像并根据图标类型调整它们。图片资源工作室支持以下文件类型:PNG(首选)、JPG(可接受)和 GIF(不推荐)。

文本字符串

图片资源工作室允许您使用各种字体输入文本字符串,并将其放置在图标上。它会将基于文本的图标转换为不同密度的 PNG 文件。您可以使用安装在计算机上的字体。

运行图片资源工作室

要启动图片资源工作室,请按照以下步骤操作:

  1. 在**项目**窗口中,选择Android 视图
  2. 右键点击**res**文件夹,然后选择**新建** > **图片资源**。

    The adaptive and legacy icon wizard in Image Asset Studio.

  3. 然后按照步骤继续:

创建自适应和传统启动器图标

在您打开图片资源工作室后,您可以按照以下步骤添加自适应和传统图标:

  1. 在**图标类型**字段中,选择**启动器图标(自适应和传统)**。
  2. 在**前景图层**标签中,选择一个**资源类型**,然后在下面的字段中指定资源:
    • 选择**图像**以指定图像文件的路径。
    • 选择**剪贴画**以指定来自Material Design 图标集的图像。
    • 选择**文本**以指定文本字符串并选择字体。
  3. 在**背景图层**标签中,选择一个**资源类型**,然后在下面的字段中指定资源。您可以选择颜色或指定图像作为背景图层。
  4. 在**选项**标签中,查看默认设置并确认您要生成传统、圆形和 Google Play 商店图标。
  5. 可以选择更改**前景图层**和**背景图层**标签的名称和显示设置:
    • **名称** - 如果您不想使用默认名称,请键入新名称。如果该资源名称已存在于项目中(如向导底部显示的错误所示),则会将其覆盖。名称只能包含小写字符、下划线和数字。
    • **修剪** - 要调整源资源中图标图形和边框之间的边距,请选择**是**。此操作会删除透明空间,同时保留纵横比。要保持源资源不变,请选择**否**。
    • **颜色** - 要更改**剪贴画**或**文本**图标的颜色,请点击该字段。在**选择颜色**对话框中,指定颜色,然后点击**选择**。新值将显示在字段中。
    • **调整大小** - 使用滑块以百分比指定缩放因子,以调整**图像**、**剪贴画**或**文本**图标的大小。当您指定**颜色**资源类型时,此控件将针对背景图层禁用。
  6. 点击**下一步**。
  7. 可以选择更改资源目录:选择要在其中添加图像资源的资源源集:**src/main/res**、**src/debug/res**、**src/release/res**或自定义源集。主源集适用于所有构建变体,包括调试和发布。调试和发布源集将覆盖主源集并应用于构建的一个版本。调试源集仅用于调试。要定义新的源集,请选择**文件** > **项目结构** > **app** > **构建类型**。例如,您可以定义一个 beta 源集并创建包含在右下角的文本“BETA”的图标版本。更多信息,请参见配置构建变体
  8. 点击**完成**。图片资源工作室会将图像添加到不同密度的**mipmap**文件夹中。

预览主题应用图标

Android Studio 允许您预览主题应用图标并测试它如何适应用户壁纸的颜色。要预览主题应用图标,请打开定义图标的launcher.xml 文件,然后使用工具栏上的**系统 UI 模式**选择器切换壁纸,并查看图标的反应。

要了解有关如何创建主题应用图标的更多信息,请参见自适应图标

**系统 UI 模式**选择器。

预览不同壁纸上的主题应用图标。

创建操作栏或标签图标

在您打开图片资源工作室后,您可以按照以下步骤添加操作栏或标签图标:

  1. 在**图标类型**字段中,选择**操作栏和标签图标**。
  2. 选择一个**资源类型**,然后在下面的字段中指定资源:
    • 在**剪贴画**字段中,点击按钮。
    • 在**选择图标**对话框中,选择一个Material 图标,然后点击**确定**。

    • 在**路径**字段中,指定图像的路径和文件名。点击**...**以使用对话框。
    • 在**文本**字段中,键入文本字符串并选择字体。

    该图标显示在右侧的**源资源 (Source Asset)**区域以及向导底部的预览区域。

  3. 可选择更改名称和显示选项
    • **名称 (Name)** - 如果你不想使用默认名称,请输入一个新名称。如果项目中已存在该资源名称(向导底部会显示错误提示),则会覆盖现有名称。名称只能包含小写字符、下划线和数字。
    • **修剪 (Trim)** - 若要调整源资源中图标图形与边框之间的间距,请选择**是 (Yes)**。此操作会去除透明空间,同时保持纵横比。若要保持源资源不变,请选择**否 (No)**。
    • **填充 (Padding)** - 如果你想调整所有四边的源资源填充,请移动滑块。选择-10%到50%之间的值。如果你也选择了**修剪 (Trim)**,则先进行修剪操作。
    • **主题 (Theme)** - 选择**HOLO_LIGHT** 或 **HOLO_DARK**。或者,要在**选择颜色 (Select Color)** 对话框中指定颜色,请选择**自定义 (CUSTOM)**,然后单击**自定义颜色 (Custom color)** 字段。

    图像资源工作室会在透明方块内创建图标,因此边缘会有一些填充。填充为标准投影图标效果提供了足够的空。

  4. 点击**下一步 (Next)**。
  5. 可选择更改资源目录
    • **资源目录 (Res Directory)** - 选择要在其中添加图像资源的资源源集:**src/main/res**、**src/debug/res**、**src/release/res**或用户定义的源集。主源集适用于所有构建变体,包括调试和发布版本。调试和发布源集会覆盖主源集,并应用于构建的一个版本。调试源集仅用于调试。要定义新的源集,请选择**文件 (File)** > **项目结构 (Project Structure)** > **app** > **构建类型 (Build Types)**。例如,你可以定义一个测试版源集,并创建一个在右下角包含文本“BETA”的图标版本。更多信息,请参阅配置构建变体 (Configure Build Variants)

    **输出目录 (Output Directories)**区域显示图像及其在**项目 (Project)**窗口的项目文件视图 (Project Files view)中将出现的位置。

  6. 点击**完成 (Finish)**。
  7. 图像资源工作室会在不同密度的**drawable**文件夹中添加图像。

创建通知图标

打开图像资源工作室后,你可以按照以下步骤添加通知图标:

  1. 在**图标类型 (Icon Type)**字段中,选择**通知图标 (Notification Icons)**。
  2. 选择一个**资源类型**,然后在下面的字段中指定资源:
    • 在**剪贴画**字段中,点击按钮。
    • 在**选择图标**对话框中,选择一个Material 图标,然后点击**确定**。

    • 在**路径**字段中,指定图像的路径和文件名。点击**...**以使用对话框。
    • 在**文本**字段中,键入文本字符串并选择字体。

    该图标显示在右侧的**源资源 (Source Asset)**区域以及向导底部的预览区域。

  3. 可选择更改名称和显示选项
    • **名称 (Name)** - 如果你不想使用默认名称,请输入一个新名称。如果项目中已存在该资源名称(向导底部会显示错误提示),则会覆盖现有名称。名称只能包含小写字符、下划线和数字。
    • **修剪 (Trim)** - 若要调整源资源中图标图形与边框之间的间距,请选择**是 (Yes)**。此操作会去除透明空间,同时保持纵横比。若要保持源资源不变,请选择**否 (No)**。
    • **填充 (Padding)** - 如果你想调整所有四边的源资源填充,请移动滑块。选择-10%到50%之间的值。如果你也选择了**修剪 (Trim)**,则先进行修剪操作。

    图像资源工作室会在透明方块内创建图标,因此边缘会有一些填充。填充为标准投影图标效果提供了足够的空。

  4. 点击**下一步 (Next)**。
  5. 可选择更改资源目录
    • **资源目录 (Res Directory)** - 选择要在其中添加图像资源的资源源集:**src/main/res**、**src/debug/res**、**src/release/res**或用户定义的源集。主源集适用于所有构建变体,包括调试和发布版本。调试和发布源集会覆盖主源集,并应用于构建的一个版本。调试源集仅用于调试。要定义新的源集,请选择**文件 (File)** > **项目结构 (Project Structure)** > **app** > **构建类型 (Build Types)**。例如,你可以定义一个测试版源集,并创建一个在右下角包含文本“BETA”的图标版本。更多信息,请参阅配置构建变体 (Configure Build Variants)

    **输出目录 (Output Directories)**区域显示图像及其在**项目 (Project)**窗口的项目文件视图 (Project Files view)中将出现的位置。

  6. 点击**完成 (Finish)**。
  7. 图像资源工作室会在不同密度和版本的**drawable**文件夹中添加图像。

在代码中使用 Views 引用图像资源

你通常可以在代码中以通用的方式引用图像资源,当你的应用运行时,相应的图像会根据设备自动显示。

  • 在大多数情况下,你可以在 XML 代码中将图像资源引用为@drawable,或在 Java 代码中引用为Drawable
  • 例如,以下布局 XML 代码在一个ImageView中显示 drawable。

    <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 对象,例如活动、片段、布局、视图等等。

  • 如果你的应用使用支持库,你可以在 XML 代码中使用app:srcCompat语句引用图像资源。例如:
  • <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);

更多信息,请参阅访问资源 (Accessing Resources)

从项目中删除图标

要从项目中删除图标:

  1. 在**项目**窗口中,选择Android 视图
  2. 展开启动器图标的**res/mipmap**文件夹,或其他类型图标的**res/drawable**文件夹。
  3. 找到包含要删除的图标名称的子文件夹。
  4. 此文件夹包含不同密度的图标。

  5. 选择该文件夹并按**删除 (Delete)**键。
  6. 或者,选择**编辑 (Edit)** > **删除 (Delete)**。或者右键单击该文件并选择**删除 (Delete)**。

    将出现**安全删除 (Safe Delete)**对话框。

  7. 可选择设置选项以查找项目中使用图标的位置,然后单击**确定 (OK)**。
  8. Android Studio 将从项目和驱动器中删除文件。但是,如果你选择搜索项目中使用这些文件的位置,并且找到了一些用法,则可以查看它们并决定是否删除它们。你必须删除或替换这些引用才能成功编译你的项目。

  9. 选择**构建 (Build)** > **清理项目 (Clean Project)**。
  10. Android Studio 将删除与已删除图像资源相对应的任何生成的图像文件。它会将它们从项目和驱动器中删除。

  11. 如果需要,请更正由于引用该资源的代码部分而导致的任何剩余错误。
  12. Android Studio 会突出显示代码中的这些错误。删除代码中的所有引用后,你可以再次成功构建你的项目。