https://kotlinlang.org logo
#compose
Title
# compose
t

trickybits

08/30/2021, 7:17 PM
This is the only way I could figure out how to tile a background image loaded by Coil. 🤔 Any thoughts on making this better/more correct?
Copy code
var tiledBackgroundImageShader by remember { mutableStateOf<ShaderBrush?>(null) }
    val imageLoader = LocalImageLoader.current
    val localContext = LocalContext.current
    LaunchedEffect(backgroundImageSrc) {
        val builder = ImageRequest.Builder(localContext).data(backgroundImageSrc)
        val result = imageLoader.execute(builder.build()).drawable?.toBitmap()
        if (result != null) {
            val shader = ImageShader(result.asImageBitmap(), tileModeX = TileMode.Repeated, tileModeY = TileMode.Repeated)
            tiledBackgroundImageShader = ShaderBrush(shader)
        }
    }
and for the content:
Copy code
Box(
        modifier = Modifier
            .drawWithCache {
                onDrawBehind {
                    drawRect(backgroundColor)
                    tiledBackgroundImageShader?.let { drawRect(it) }
                }
            }
    ) {
c

Colton Idle

08/31/2021, 7:47 AM
I'd ask on the coil github page under the "discussions" tab. The maintainer has always responded to me there!
t

trickybits

08/31/2021, 1:37 PM
Thanks I’ll try that
10 Views