在 Jetpack Compose 中将 Drawable 实例设置为 Image

Wil*_*ran 17 android kotlin android-jetpack android-jetpack-compose

在 Jetpack Compose 中,谁能告诉我有没有办法将 Drawable 对象分配给 Image compose 视图?

我把应用程序安装在 Android 设备上。我得到一个类型为 Drawable 的图标,我想在 Image 中使用它

val icon: Drawable = packageInfor.applicationInfo.loadIcon(packageManager)
Run Code Online (Sandbox Code Playgroud)

我发现有3个函数可以分配图像

  • 来自画家 (IdRes)
  • 来自图像位图
  • 来自图像向量

在此输入图像描述

综上所述,我不知道如何分配一个 Drawable 实例。

Wil*_*ran 24

毕竟,我通过 Accompanist 找到了一个简单的解决方案。感谢系统的@Sinner 给我的建议。

\n

将此依赖项添加到应用程序 gradle。

\n
implementation "com.google.accompanist:accompanist-drawablepainter:<version>" //0.28.0\n
Run Code Online (Sandbox Code Playgroud)\n

使用:

\n
Image(\n    painter = rememberDrawablePainter(drawable = drawable),\n    contentDescription = "content description",\n)\n
Run Code Online (Sandbox Code Playgroud)\n

查看:Drawable Painter\xc2\xb6

\n


ngl*_*ber 13

编辑:您绝对应该使用Wilson Tran 答案中推荐的伴奏库。因为它提供了对多种绘图的支持。

如果您不使用伴奏库,您可以执行以下操作...

ContextCompat.getDrawable(LocalContext.current, R.mipmap.ic_launcher)?.let {
    Image(bitmap = it.toBitmap().asImageBitmap(), contentDescription = null)
}
Run Code Online (Sandbox Code Playgroud)

toBitmap如果需要,您可以在函数中设置可绘制尺寸...


las*_*ase 7

如果您使用的是Coil 库rememberImagePainter将接受 anAny?作为其数据参数,其中包括对Drawable实例的支持。我将其用作图像的一体化解决方案,而不是导入伴奏者。

Image(
    painter = rememberImagePainter(data = myDrawableInstance)
)
Run Code Online (Sandbox Code Playgroud)