我有一個尋呼機(伴奏者),其影像是從 Web 上使用 Compose 中的 Coil 獲取的。
所述rememberPainter()似乎只呼叫請求時,Image示出了用于在第一時間可組合。
所以當我在尋呼機中滑動頁面時,Image只在那個時刻顯示,所以我們必須稍等片刻。
有什么方法可以強制rememberPainter(線圈)預加載?
編輯1:
這是我的實作的一個簡單版本(洗掉了很??多東西,但對結果沒有影響):
@Composable
private fun Foo(imageList: List<ImageHolder>) {
if (imageList.isEmpty())
return
val painterList = imageList.map {
rememberImagePainter(
data = it.getDataForPainter(),
builder = {
crossfade(true)
})
}
ImageLayout(imageList, painterList)
}
@Composable
fun ImageLayout(imageList: List<ImageHolder>, painterList: List<Painter>) {
HorizontalPager(
count = imageList.size,
modifier = Modifier.fillMaxWidth(),
) { page ->
Image(
painter = painterList[page],
"",
modifier = Modifier
.fillMaxWidth()
.height(200.dp)
.background(
imageList[page].colorAverage
),
contentScale = ContentScale.Crop
)
}
}
我也嘗試在 Image 上直接使用 rememberImagePainter 以防萬一。但問題顯然是第 2、3、4 頁的 Image() 沒有渲染,所以 Image 不會呼叫畫家。我試圖看看它內部是如何作業的,但找不到。
編輯 2:我找到了一個解決方法,但它不干凈
for (painter in painterList)
Image(painter = painter, contentDescription = "", modifier = Modifier.size(0.001.dp))
It force coil to load image and with a size really small like 0.001.dp (with 0 it don't load).
Also the problem is that in the builder you need to force a size or it will just load one pixel, so I force the full size of image as I don't know what size would have been available for the image.
uj5u.com熱心網友回復:
在線圈檔案中有一個關于預加載的部分。根據您的架構,您可以在不同的地方執行此操作,最簡單的方法是使用“LaunchedEffect”:
val context = LocalContext.current
val imageLoader = LocalImageLoader.current
LaunchedEffect(Unit) {
val request = ImageRequest.Builder(context)
.data("https://www.example.com/image.jpg")
// Optional, but setting a ViewSizeResolver will conserve memory by limiting the size the image should be preloaded into memory at.
// For example you can set static size, or size resolved with Modifier.onSizeChanged
// .size(coil.size.PixelSize(width = 100, height = 100))
// or resolve display size if your images are full screen
// .size(DisplaySizeResolver(context))
.build()
imageLoader.enqueue(request)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/324551.html
標籤:android kotlin android-jetpack-compose coil
