简体   繁体   English

如何检测 ImagePainter 何时使用 Jetpack Compose 从 web 加载照片?

[英]How to detect when ImagePainter loads photo from web using Jetpack Compose?

I display images from web by url links.我通过 url 链接显示来自 web 的图像。 I want to display progress bar until image will be loaded and then hide progress bar and display image.我想在加载图像之前显示进度条,然后隐藏进度条并显示图像。 I don't know how to detect when painter loaded image.我不知道如何检测画家何时加载图像。

 HorizontalPager(count = photoUrlList.size, state = photoPagerState) { page ->
                var shouldBeProgressBarDisplayed by mutableStateOf(true)

                val painter = rememberImagePainter(photoUrlList[page], builder = {
                    this.listener(
                        onSuccess = { request, ex ->
                            shouldBeProgressBarDisplayed = false
                        })
                })

                if (shouldBeProgressBarDisplayed) {
                    ProgressBar()
                } else {
                    Image(
                        painter = painter,
                        modifier = Modifier
                            .padding(vertical = 100.dp)
                            .fillMaxSize(),
                        contentScale = ContentScale.Crop,
                        contentDescription = ""
                    )
                }
            }

You can use painter.state to achieve this您可以使用painter.state来实现这一点

HorizontalPager(count = photoUrlList.size, state = photoPagerState) { page ->
Box(
    modifier = Modifier
        .fillMaxSize()
        .padding(vertical = 100.dp)
) {
    val painter = rememberImagePainter(
        data = photoUrlList[page],
        builder = {
            crossfade(500)
    })

    val painterState = painter.state

    if (painterState is ImagePainter.State.Loading) {
        CircularProgressIndicator(
            modifier = Modifier.align(Alignment.Center),
            color = MaterialTheme.colors.secondary
        )
    } else {
        Image(
            painter = painter,
            modifier = Modifier
                .fillMaxSize(),
            contentScale = ContentScale.Crop,
            contentDescription = ""
        )
    }
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在 Jetpack compose 中检测 HorizontalPager 中的滑动? - How to detect swipe in HorizontalPager in Jetpack compose? 如何检测 Jetpack Compose 中是否按下了按钮? - How to detect that a button is pressed in Jetpack Compose? 如何检测 Jetpack Compose 中变换手势的结束? - How to detect the end of transform gesture in Jetpack Compose? 从 jetpack 组合导航使用 popBackStack 时如何更改脚手架顶部栏的标题? - How to change title for scaffold top bar when using popBackStack from jetpack compose navigation? 如何使用 navController 在 Jetpack Compose 中从一个屏幕导航到另一个屏幕? - How to navigate from a screen to another in Jetpack Compose using navController? 在 Android 应用程序中使用 Jetpack compose 时如何禁用 Darktheme? - How to disable Darktheme when using Jetpack compose in Android app? 如何防止 Jetpack Compose ExposedDropdownMenuBox 在滚动时显示菜单 - How to prevent Jetpack Compose ExposedDropdownMenuBox from showing menu when scrolling Jetpack Compose:如何检测 Horizo​​ntalPager 中的 TabRow 何时可见并调用 ViewModel 函数? - Jetpack Compose: How to detect when TabRow inside HorizontalPager is visible and call a ViewModel function? 如何使用 Jetpack Compose Accompanist 拦截来自 WebView 的切换交互 - How to intercept Toggle interactions from WebView using Jetpack Compose Accompanist 如何使用刀柄将 jetpack 组合中的“rememberNavController”注入到活动中? - How to inject `rememberNavController` from jetpack compose into an activity using hilt?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM