Mar*_*tin 5 android android-jetpack-compose coil
Jetpack Compose 和 Coil 的新手,但 Android 或 Java/Kotlin 的新手。
我无法显示 URL 中的图像...缺少一些基本内容?
我从( https://developer.android.com/jetpack/compose/tutorial )获取了 Google/Android 教程,并将其添加到 gradle 脚本中:
implementation("io.coil-kt:coil:2.0.0-rc03")
implementation("io.coil-kt:coil-compose:2.0.0-rc03")
Run Code Online (Sandbox Code Playgroud)
我在消息中添加了一个字符串 url:
data class Message(val author: String, val url: String, val body: String)
Run Code Online (Sandbox Code Playgroud)
并将 URL 添加到示例数据中:
Message(
"Colleague",
"http://martypants.us/images/person4.png",
"Searching for alternatives to XML layouts..."
)
Run Code Online (Sandbox Code Playgroud)
在我的 @Composable 中,我将其更改为使用 AsyncImage 来加载 URL,而不是可绘制的
@Composable
fun MessageCard(msg: Message) {
Row {
AsyncImage(
model = ImageRequest.Builder(LocalContext.current)
.data(msg.url)
.build(),
placeholder = painterResource(R.drawable.ic_profile),
error = painterResource(R.drawable.ic_error),
contentDescription = stringResource(R.string.description),
contentScale = ContentScale.Fit,
modifier = Modifier
// Set image size to 40 dp
.size(40.dp)
.width(48.dp)
.height(48.dp)
// Clip image to be shaped as a circle
.clip(CircleShape)
.align(Alignment.CenterVertically)
.border(1.5.dp, MaterialTheme.colors.secondary, CircleShape)
)
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它不会加载图像。我验证了图像存在、可读等。我只看到错误占位符,在 Logcat 中从未看到任何错误。
许多其他教程都显示了类似的用法,但似乎无法弄清楚为什么我的图像未加载。我缺少什么?
好吧,这是一个菜鸟错误……有点……我一直在运行 Android 12 的 Pixel4a 上进行测试 - 没有图像,但完全没有错误。但后来我出去理清思绪,只带了我的笔记本电脑并使用了模拟器。运行 Android 11 的 Pixel2 模拟器,应用程序崩溃了,很明显我做错了什么。
致命异常:OkHttp 调度程序进程:com.example.jetpackcomposetest,PID:19029 java.lang.SecurityException:权限被拒绝(缺少 INTERNET 权限?)
现在我很好奇为什么我的 Pixel4a 从来没有抱怨权限也没有崩溃......并且从未从 Okhttp 得到致命异常
| 归档时间: |
|
| 查看次数: |
6531 次 |
| 最近记录: |