在 Jetpack Compose 中将 Drawable 实例设置为图像

问题描述 投票:0回答:5

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

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

中使用它
val icon: Drawable = packageInfor.applicationInfo.loadIcon(packageManager)

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

  • 来自画家 (IdRes)
  • 来自 ImageBitmap
  • 来自ImageVector

我不知道如何分配 Drawable 实例。

android kotlin android-jetpack android-jetpack-compose
5个回答
16
投票

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

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

implementation "com.google.accompanist:accompanist-drawablepainter:<version>" //0.28.0

使用:

Image(
    painter = rememberDrawablePainter(drawable = drawable),
    contentDescription = "content description",
)

签出:Drawable Painter¶


8
投票

编辑:您绝对应该按照 Wilson Tran 答案中的建议使用伴奏库。因为它提供了对多种可绘制对象的支持。

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

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

如果需要,您可以在

toBitmap
函数中设置可绘制尺寸...


5
投票

如果您使用的是 Coil 库

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

Image(
    painter = rememberImagePainter(data = myDrawableInstance)
)

0
投票

我们可以像下面这样简单地放置可绘制资源:

Icon(painter = painterResource(id = R.drawable.icon_half_rect_croner),contentDescription = null, tint = Color.Red)


-2
投票

你可以这样做

 val backgroundImage = painterResource(R.drawable.your_image)

然后像那样将其传递给您的图像

 Image(painter = backgroundImage, contentDescription = null)

那行得通。

© www.soinside.com 2019 - 2024. All rights reserved.