我正在使用accompanist-coil:0.12.0
。我想从一个url加载图像,然后将可绘制对象传递给一个方法。我正在使用这个:
val painter = rememberCoilPainter(
request = ImageRequest.Builder(LocalContext.current)
.data(imageUrl)
.target {
viewModel.calcDominantColor(it) { color ->
dominantColor = color
}
}
.build(),
fadeIn = true
)
然后像这样把painter传递给Image
:
Image(
painter = painter,
contentDescription = "Some Image",
)
加载映像时没有任何问题,但从未调用方法calcDominantColor
。
我是不是做错了?
- 更新日期:**
我可以在requestBuilder中使用Transformation调用该方法,但我不确定这是否是应该做的,因为我实际上并没有 * 转换 * Bitmap
本身:
val painter = rememberCoilPainter(
request = entry.imageUrl,
requestBuilder = {
transformations(
object: Transformation{
override fun key(): String {
return entry.imageUrl
}
override suspend fun transform(
pool: BitmapPool,
input: Bitmap,
size: Size
): Bitmap {
viewModel.calcDominantColor(input) { color ->
dominantColor = color
}
return input
}
}
)
}
)
这在第一次使用时效果很好,但是当可组合程序重新组合时,转换从缓存中返回,我的方法不运行。
4条答案
按热度按时间rjjhvcjd1#
我认为您希望使用
LaunchedEffect
沿着ImageLoader
来访问加载器结果中的位图。aemubtdh2#
我建议使用新的coil-compose库,只需复制以下内容并将其添加到app build.gradle文件即可:
我也在遵循教程,在这一点上卡住了。我会建议复制并粘贴以下代码:
x8goxv8g3#
将“异步图像”替换为“可绘制的异步图像”:
我已经创建了这个可组合的灵感来自@Aknk答案和线圈源代码。
提示:您可以使用这个Composable从URL加载和渲染您的图像,并通过返回的Drawable获得您的图像Palette。
ercv8c1e4#
您可以使用**
onSuccess
**回调函数获取可绘制对象:您也可以对
rememberAsyncImagePainter
使用相同的方法。