Fan*_*dez 11 android android-jetpack-compose coil
我正在开发一个 Jetpack 项目,该项目使用 Coil Library 从 API 下载图像。
我已确认 API 调用已成功返回有效的图像 URL 和相关数据。我可以使用返回的 URL 在浏览器上查看图像。
这是我的图像可组合项:
@Composable
fun AstroPhoto(picture: AstroPicture) {
val imgUrl = picture.url.toUri()
.buildUpon()
.scheme("https")
.build()
AsyncImage(model = ImageRequest.Builder(LocalContext.current)
.data(imgUrl)
.size(Size.ORIGINAL)
.crossfade(true).build(),
placeholder = painterResource(R.drawable.loading_animation),
contentDescription = picture.title,
contentScale = ContentScale.Crop,
)
}
Run Code Online (Sandbox Code Playgroud)
我将上面的图像称为可组合在惰性列中:
....
Box( ... ) {
LazyColumn(content = {
items(state.astroPictures) {
AstroPhoto(picture = it)
} })
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的异常:
致命异常:主进程:com.uxstate,PID:31790 java.lang.IllegalArgumentException:仅支持 VectorDrawables 和光栅化资源类型。PNG、JPG 位于 androidx.compose.ui.res.PainterResources_androidKt.loadVectorResource(PainterResources.android.kt:93)
我正在compose_version = '1.1.1'与kotlin_version = '1.6.10'. 我的线圈版本是"io.coil-kt:coil-compose:2.1.0"and compileSdk 32and AS Chipmunk。源代码可以在这里找到。
我已检查文档并在线搜索,但无法解决该错误。请帮我解决这个错误,谢谢。
小智 8
刚刚遇到这个错误,看看有没有人和我有同样的错误。
我刚刚重新打开 Android Studio,之后我使用 Clean Project 和 Rebuild Project。现在项目和撰写预览工作正常。
我的项目之前工作正常,但是在我更改了一些代码之后(只需添加一个函数,它与 png 或 jpg 或其他有关图像的内容无关),我的应用程序在渲染 png 时崩溃。但是当我在模拟器中重新安装该项目后,它就被修复了。这似乎是 Compose 中的一个错误?我不知道,可能是gradle中的一个错误? 只需尝试重新安装您的应用程序,我认为它会得到修复。
这似乎是 Jetpack Compose 的错误
目前我已经能够在我自己的项目中通过使用 AndroidView 渲染 ImageView 来解决这个问题。
如果您需要异步加载图像,您可以渲染 Glide imageview 或类似的东西
fun AppImage(
modifier: Modifier = Modifier,
@DrawableRes resource: Int,
colorFilter: ColorFilter? = null
) {
AndroidView(
modifier = modifier,
factory = { context ->
ImageView(context).apply {
setImageResource(resource)
setColorFilter(colorFilter?.asAndroidColorFilter())
}
},
update = {
it.setImageResource(resource)
it.colorFilter = colorFilter?.asAndroidColorFilter()
}
)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13531 次 |
| 最近记录: |