有什么方法可以将drawable转换为ImageVector吗?

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

我的意思是使用 vectorResource(id = ...) 以外的方法(这让我对上下文、资源和其他事物的不断调用感到困惑)。

我问这个是因为我发现我们可以在不使用smthng资源的情况下制作文本样式、形状、颜色和字符串。

例如

iconAccent = Color(context.getColor(R.color.iconAccent))

编辑1:
我发现 Bitmap.asImageAsset() 方法,它在我的情况下不起作用,因为矢量,但可能对某人有用。

编辑2:
我通过这种方式得到结果:

val group = ContextCompat.getDrawable(context, R.drawable.icon_group) as VectorDrawable
DrawableCompat.setTint(group, context.getColor(R.color.foregroundMain))
group = group.toBitmap().asImageBitmap()

DrawableCompat.setTint
需要使用主题颜色正确绘制图标(我们不需要使用
vectorResource(id = ...)
,因为它正确地从
fillColor
属性获取颜色)

但是这是拐杖,如果你知道任何其他方法 - 请写下来。 相信compose开发者会考虑到这个问题。

android android-jetpack-compose
2个回答
1
投票

您可以使用此工具(Svg2Compose:https://github.com/DenisMondon/Svg2Compose)将 Vector Drawable 转换为 ImageVector。
这样您就可以直接拨打电话:

Icons.YOUR_ICON

而不是:

vectorResource(R.drawable.your_icon)

0
投票

是的!

ImageVector.vectorResource(R.drawable.ic_remove_circle)

它不需要上下文。

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