Android Compose - Image with 3 types: color solid, linear gradient, url

Viewed 379

I want to use only one Image with 3 types of src: color solid, color linear gradient, or image URL

It like that

when (type) {
    Type.SOLID -> Image(...)
    Type.GRADIENT -> Image(...)
    Type.URL -> Image(...) // I can do this case, I use Coil for load image URL
}

How to make it? Thanks.

1 Answers

You can use something like:

when (type) {
    Type.SOLID ->
       Box(  modifier = Modifier.size(sizeImage).background(Color.Blue))
    Type.GRADIENT -> 
       Box(  modifier = Modifier.size(sizeImage).background(gradient))
    Type.URL -> 
       Image(
        painter = rememberImagePainter("...."),
        modifier = Modifier
            .size(sizeImage),
        contentDescription = "",
        contentScale = ContentScale.Crop
    )
}

Note: rememberImagePainter requires the coil-compose implementation.

with:

val sizeImage = 200.dp

val gradient = Brush.verticalGradient(
    colors = listOf(Color.Yellow, Color.Red, Color.Black),
    startY = sizeImage.value.toFloat().toFloat()/3,  // 1/3
    endY = sizeImage.value.toFloat()
)
Related