创建应用图标

图标可以帮助用户识别您的应用及其内部操作。您可以访问 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 包含一个名为 Image Asset Studio 的工具,可帮助您根据 Material Design 图标、自定义图像和文本字符串生成自己的应用图标。它会生成一组适合您应用支持的每个 像素密度 的图标。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/ 目录中的正确位置。它还会创建一个适合 Google Play 商店的 512 x 512 像素图像。

我们建议您即使支持旧版 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 的替代方案,您可以使用 Vector 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 Design 图标:只需从对话框中选择一个图标即可。有关更多信息,请参阅 Material Icons

图像

您可以导入自己的图像并调整它们以适应图标类型。Image Asset Studio 支持以下文件类型:PNG(首选)、JPG(可接受)和 GIF(不建议)。

文本字符串

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

运行 Image Asset Studio

要启动 Image Asset Studio,请按照以下步骤操作

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

    The adaptive and legacy icon wizard in Image Asset Studio.

  3. 继续按照以下步骤操作

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

在您 打开 Image Asset Studio 后,您可以通过以下步骤添加自适应和传统图标

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

预览主题化应用图标

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

要详细了解如何创建主题化应用图标,请参阅 自适应图标

系统 UI 模式选择器。

在不同的墙纸上预览主题化应用图标。

创建操作栏或标签图标

在您 打开 Image Asset Studio 后,您可以通过以下步骤添加操作栏或标签图标

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

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

    图标将显示在右侧的源资源区域以及向导底部的预览区域中。

  3. 可以选择更改名称和显示选项
    • 名称 - 如果您不想使用默认名称,请输入新名称。如果该资源名称已存在于项目中,则会在向导底部显示错误,并且会覆盖它。名称只能包含小写字符、下划线和数字。
    • 修剪 - 要调整源资源中图标图形和边框之间的边距,请选择。此操作会删除透明空间,同时保留纵横比。要保持源资源不变,请选择
    • 填充 - 如果要调整源资源在所有四边的填充,请移动滑块。选择 -10% 到 50% 之间的值。如果您还选择了修剪,则会先进行修剪。
    • 主题 - 选择HOLO_LIGHTHOLO_DARK。或者,要在选择颜色对话框中指定颜色,请选择自定义,然后单击自定义颜色字段。

    Image Asset Studio 会在透明的正方形内创建图标,以便边缘有一些填充。填充为标准投影图标效果提供了足够的空间。

  4. 单击下一步
  5. 可以选择更改资源目录

    • 资源目录 - 选择您想要添加图像资源的资源源集:src/main/ressrc/debug/ressrc/release/res或用户定义的源集。主源集适用于所有构建变体,包括调试和发布。调试和发布源集会覆盖主源集,并应用于构建的一个版本。调试源集仅用于调试。要定义新的源集,请选择文件 > 项目结构 > app > 构建类型。例如,您可以定义一个 beta 源集并创建一个包含右下角“BETA”文本的图标版本。有关更多信息,请参阅配置构建变体

    输出目录区域显示图像以及它们将在项目窗口的项目文件视图中出现的位置。

  6. 点击完成
  7. 图像资源工作室将图像添加到不同密度的drawable文件夹中。

创建通知图标

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

  1. 图标类型字段中,选择通知图标
  2. 选择资源类型,然后在下面的字段中指定资源
    • 剪贴画字段中,单击按钮。
    • 选择图标对话框中,选择 Material Design 图标,然后单击确定

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

    图标将显示在右侧的源资源区域以及向导底部的预览区域中。

  3. 可以选择更改名称和显示选项
    • 名称 - 如果您不想使用默认名称,请输入新名称。如果该资源名称已存在于项目中,则会在向导底部显示错误,并且会覆盖它。名称只能包含小写字符、下划线和数字。
    • 修剪 - 要调整源资源中图标图形和边框之间的边距,请选择。此操作会删除透明空间,同时保留纵横比。要保持源资源不变,请选择
    • 填充 - 如果要调整源资源在所有四边的填充,请移动滑块。选择 -10% 到 50% 之间的值。如果您还选择了修剪,则会先进行修剪。

    Image Asset Studio 会在透明的正方形内创建图标,以便边缘有一些填充。填充为标准投影图标效果提供了足够的空间。

  4. 单击下一步
  5. 可以选择更改资源目录

    • 资源目录 - 选择您想要添加图像资源的资源源集:src/main/ressrc/debug/ressrc/release/res或用户定义的源集。主源集适用于所有构建变体,包括调试和发布。调试和发布源集会覆盖主源集,并应用于构建的一个版本。调试源集仅用于调试。要定义新的源集,请选择文件 > 项目结构 > app > 构建类型。例如,您可以定义一个 beta 源集并创建一个包含右下角“BETA”文本的图标版本。有关更多信息,请参阅配置构建变体

    输出目录区域显示图像以及它们将在项目窗口的项目文件视图中出现的位置。

  6. 点击完成
  7. 图像资源工作室将图像添加到不同密度和版本的drawable文件夹中。

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

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

  • 在大多数情况下,您可以将图像资源引用为XML 代码中的@drawable或Java 代码中的Drawable
  • 例如,以下布局 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 对象,例如活动、片段、布局、视图等。

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

有关更多信息,请参阅访问资源

从项目中删除图标

要从项目中删除图标,请执行以下操作

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

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

    将出现安全删除对话框。

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

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

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