创建应用图标 (Views)

Jetpack Compose 实现

本页包含有关创建和使用基于 View 的布局特有的应用图标的信息。如需详细了解如何创建应用图标,请参阅创建应用图标,其中介绍了我们推荐的界面框架。

创建操作栏或标签页图标

使用 Image Asset Studio 为基于 View 的布局创建操作栏和标签页图标。

操作栏图标是置于操作栏中的图形元素,它们表示各个操作项。如需了解详情,请参阅添加和处理操作应用栏 - Material Design{:.external} 和操作栏设计

标签页图标是用于在多标签页界面中表示各个标签页的图形元素。每个标签页图标都有两种状态:未选中和选中。如需了解详情,请参阅使用标签页创建滑动视图标签页 - Material Design

Image Asset Studio 会将图标放置在 res/drawable-<density>/ 目录中的适当位置。

建议您对操作栏和标签页图标使用 Material Design 样式,即使您的应用支持较低的 Android 版本。使用 appcompat 和其他支持库可以向较低版本的平台提供您的 Material Design 界面。

除了使用 Image Asset Studio,您还可以使用 Vector Asset Studio 创建操作栏和标签页图标。矢量可绘制对象适合用来创建简单图标,并且可以减小应用的大小。

打开 Image Asset Studio 后,您可以按照以下步骤添加操作栏或标签页图标:

  1. Icon Type 字段中,选择 Action Bar and Tab Icons
  2. Asset Type 中选择一种资源类型,然后在下面的字段中指定资源:

    • Clip Art 字段中,点击相应按钮。

      Select Icon 对话框中,选择一个素材图标,然后点击 OK

    • Path 字段中,指定图片的路径和文件名。 点击 以使用对话框。

    • Text 字段中,输入文本字符串并选择字体。

    图标会显示在右侧的 Source Asset 区域以及向导底部的预览区域中。

  3. (可选)更改名称和显示选项:

    • 名称 - 如果您不想使用默认名称,请输入新名称。 如果项目中已存在该资源名称(由向导底部的错误来指示),它将被覆盖。名称只能包含小写字符、下划线和数字。

    • Trim - 如需调整源资源中图标图形与边框之间的边距,请选择 Yes。此操作将移除透明空间,同时让宽高比保持不变。如需让源资源保持不变,请选择 No

    • Padding - 如果要调整全部四面的源资源内边距,请移动滑块。选择一个介于 -10% 和 50% 之间的值。如果也选择了 Trim,则先进行剪裁。

    • Theme - 选择 HOLO_LIGHTHOLO_DARK。或者,如需在 Select Color 对话框中指定颜色,请选择 CUSTOM,然后点击 Custom color 字段。

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

  4. 点击下一步

  5. (可选)更改资源目录:

    • Res Directory - 选择想在其中添加图片素材资源的资源源代码集:src/main/ressrc/debug/ressrc/release/res 或用户定义的源代码集。主源代码集适用于所有 build 变体,包括调试和发布 build。调试和发布源代码集将替换主源代码集,并应用于 build 的一个版本。调试源代码集仅用于调试。如需定义新源代码集,请依次选择 File > Project Structure > app > Build Types。例如,您可以定义一个 Beta 版源代码集,并创建一个图标版本,使其右下角包含文本“BETA”。如需了解详情,请参阅配置 build 变体

    Output Directories 区域会显示图片以及它们将出现在 Project 窗口的“Project Files”视图中的哪些文件夹内。

  6. 点击 Finish

    Image Asset Studio 会针对不同的密度将图片添加到 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 类中,它适用于界面对象,如 activity、fragment、布局和视图等。

  • 如果您的应用使用支持库,您可以通过 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);

如需了解详情,请参阅访问应用资源