devendroid / VectorChildFinder

VectorChildFinder helps to find inner elements of vector drawable like path and group.
Apache License 2.0
202 stars 41 forks source link

How can we use with Jetpack Compose Image? #19

Open orcuns opened 1 year ago

orcuns commented 1 year ago
@Composable
fun Button(style: ButtonStyle = ButtonStyle()) {
    val colorFilter = style.centerImageTintColorRes.let { ColorFilter.tint(colorRes(id = it)) }
    val imageView = ImageView(LocalContext.current)
    val vector = VectorChildFinder(LocalContext.current, style.centerImageRes, imageView)
    val path1: VectorDrawableCompat.VFullPath = vector.findPathByName("path1")
    path1.fillColor = style.centerImageTintColorRes

    imageView.drawable.toBitmap().asImageBitmap()

      Image(
            painter = painterResource(id = style.centerImageRes),
            colorFilter = colorFilter,
            contentDescription = "", modifier = Modifier.size(54.dp)
        )
}

I can't make it with Jetpack compose unfortunately. Maybe someone else knows a way to make it work?

devmike01 commented 1 year ago

Hey @orcuns , sorry for the late response. Here's how to use it with Jetpack Compose:

@Composable
fun VectorPathFinderIV(){
    AndroidView(factory = {context ->
        val iv = ImageView(context)
        val vector = VectorChildFinder(context, R.drawable.baseline_add_chart_24,
            iv)
        val path1 : VectorDrawableCompat.VFullPath = vector.findPathByName("mypath1")
        path1.fillColor = Color.YELLOW
        iv
    }, update = {
        it.invalidate()
    })
}

Then call VectorPathFinderIV() to show the image.