我使用coil库通过url加载图像.

    val painter = 
            rememberAsyncImagePainter(
                ImageRequest.Builder(LocalContext.current)
                .data(data = imageUrl)
                .apply(block = fun ImageRequest.Builder.() {
                    crossfade(true)
                    allowHardware(false)
                }).build()
            )
        val painterState = painter.state
        Image(
            painter = painter,
            contentDescription = null,
            modifier = Modifier
                .padding(start = 20.dp, top = 20.dp)
                .width(130.dp)
                .height(68.dp)
        )

当油漆工.状态是成功的,我正在用调色板库 Select 加载的可绘制 colored颜色 .

如何在成功加载后访问图像并以所需 colored颜色 绘制边框?

推荐答案

我想你是说

成功后如何访问图像

区域的精确边界为ImageBitmap,在图像内部绘制为ContentScale.如果这是问题所在,我构建了一个库,返回精确的边界和绘制图像的哪个部分,但因为我不确定是否要添加示例.如果您不需要精确的边界,请判断下面的答案

可以使用var color by remember {mutableStateOf(Color.Unspecified)定义 colored颜色

color发生变化时,Modifier.border(x.dp, color)将重新组合.从Palette Api获得所需的 colored颜色 后,如果您将color设置为colorVibrant,例如,您将能够在Image周围绘制具有正确尺寸的边框.

此处的状态判断用于创建可生产的样本

val painter =
    rememberAsyncImagePainter(
        ImageRequest.Builder(LocalContext.current)
            .data(data = "https://source.unsplash.com/pGM4sjt_BdQ")
            .apply(block = fun ImageRequest.Builder.() {
                crossfade(true)
                allowHardware(false)
            }).build()
    )

var color by remember { mutableStateOf(Color.Unspecified) }
val painterState = painter.state

if (painterState is AsyncImagePainter.State.Success) {
    color = Color.Red
}

Column() {
    Spacer(Modifier.height(50.dp))
    Text("PainterState State: ${painterState.painter}")
    Image(
        painter = painter,
        contentDescription = null,
        modifier = Modifier
            .padding(start = 20.dp, top = 20.dp)
            .border(2.dp, color)
            .width(300.dp)
            .height(268.dp)
    )
}

enter image description here

Android相关问答推荐

Google Play测试应用程序Crash-java.lang.NoSuchFieldError:没有Lkotlinx/coroutines/CoroutineExceptionHandler类型的字段键

如何处理谷歌未经证实的应用程序拒绝?

无法在Jetpack Compose中显示Admob原生广告

Jetpack Compose主导航中的全屏图标列表

如何在Jetpack Compose中创建这个圆形?

列表更改时,RecyclerView 中的列表不会更新

列语义在列中的第一个元素之后读取

在 Jetpack Compose 中使用 ViewModel 实现 startActivity 的最佳实践

Android工作室未成立

组成不重叠的元素

Jetpack Compose Arc 进度条动画(如何重启动画)

处理程序 postDelayed 方法不起作用,kotlin 应用程序卡在启动画面上

无法 HEAD 'https://jcenter.bintray.com/com/facebook/react/react-native/maven-metadata.xml'

自定义 Recyclerview [Android & Kotlin]

重命名列失败的房间自动迁移(NOT NULL 约束失败,生成错误的迁移类)

Android 12 通过包管理器中断 APK 安装?

在 Kotlin 客户端应用程序中发送 FCM 推送通知 - Firebase 云消息传递

Kotlin:如何在另一个变量的名称中插入一个变量的值

任何 IRCTC 的公共 API 来判断 PNR 状态和座位可用性?

在 android-billing-5.0 中获取 ProductDetails 价格