Mat*_*ias 7 android android-jetpack-compose coil
我正在使用 Jetpack Compose 1.0.0 开发一个 Android 应用程序,我正在尝试制作一个使用可为空的图像 URL 字符串的可组合项,如果它为空,它将显示一个占位符,painterResource
如果它不为空,它会显示一个占位符。将使用显示实际图像rememberImagePainter
。
我这样做的方式是:
@Composable
fun VariableImagePainterExample (
imageURL: String?
) {
val painter = rememberCoilPainter(
null,
previewPlaceholder = R.drawable.ic_placeholder_user,
fadeIn = true,
)
LaunchedEffect(imageURL) {
painter.request = imageURL
}
Image(painter = painter, contentDescription = null)
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,rememberCoilPainter
accompanist-coil 已被弃用,现在建议使用rememberImagePainter
. 但是,ImagePainter.request
不能像上面那样更改。然后我尝试了以下代码:
@Composable
fun VariableImagePainterExample (
imageURL: String?
) {
val painter = remember {
mutableStateOf<ImagePainter>(painterResource(id = R.drawable.ic_placeholder_user))
}
LaunchedEffect(imageURL) {
painter.value = rememberImagePainter(imageURL)
}
Image(painter = painter.value, contentDescription = null)
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为必须在函数上使用painterResource
and 。怎样才能达到和以前一样的效果呢?rememberImagePainter
@Composable
在 Coil 2.0.0中, 和AsyncImage
都rememberAsyncImagePainter
具有placeholder
接受任何其他画家的参数:
AsyncImage(
model = imageURL,
placeholder = painterResource(R.drawable.placeholder),
contentDescription = null,
)
Run Code Online (Sandbox Code Playgroud)
在 Coil 1.4.0中你可以builder
这样使用:
Image(
rememberImagePainter(
imageURL,
builder = {
placeholder(R.drawable.placeholder)
}
),
contentDescription = null,
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8736 次 |
最近记录: |