加载图片

从磁盘加载图片

您可以使用 Image 可组合项在屏幕上显示图形。如需从磁盘加载图片(例如 PNG、JPEG、WEBP)或矢量资源,请将 painterResource API 与图片引用搭配使用。您不必知道资源的类型,只需在 Imagepaint 修饰符中使用 painterResource 即可。

DrawScope

Image(
    painter = painterResource(id = R.drawable.dog),
    contentDescription = stringResource(id = R.string.dog_content_description)
)

为了确保应用可提供无障碍功能,请为屏幕上的视觉元素提供 contentDescription。由于 TalkBack 会朗读内容说明,因此,如果文本会被大声读出和翻译,您必须确保该文本是有意义的。在上面的示例中,stringResource() 便是用来从 strings.xml 文件中加载翻译后的内容说明。如果屏幕上的视觉元素纯粹是为了提供视觉装饰,请将 contentDescription 设为 null,以便让屏幕阅读器忽略该元素。

如果您需要较低级别的 ImageBitmap 专有功能,可使用 ImageBitmap.imageResource() 加载位图。如需详细了解 ImageBitmaps,请参阅 ImageBitmap 与 ImageVector 部分。

可绘制对象支持

painterResource 目前支持以下可绘制对象类型:

从互联网加载图片

如需从互联网加载图片,有几个第三方库可协助您处理该流程。图片加载库可以为您完成许多繁重工作;而且可以同时处理缓存(这样您就不必多次下载图片)和网络逻辑,从而下载图片并在屏幕上进行显示。

例如,如需使用 Instacart 的 Coil 库来加载图片,请将该库添加到 Gradle 文件中,并使用 AsyncImage 加载来自网址的图片:

AsyncImage(
    model = "https://example.com/image.jpg",
    contentDescription = "Translated description of what the image contains"
)

由 Kotlin 协程 (Instacart) 提供支持的图片加载库。

高效快速的 Android 图片加载库,侧重于提供流畅的滚动体验(适用于 Google)。