暂停图像加载在线圈onscroll在lazycolumn在jetpack组成Android我们正在使用线圈加载图像与喷气背包组成,早先在滑翔与recylerview或其他列表,我们有选择暂停加载图像时,我们滚动,这是一个有效的方式来防止滞后滚动,有没有办法实现这一点.
stszievb1#
根据指南,在Coil 2.x中,他们已经做到了这一点。根据指南的这一部分
的数据事实上,这是coil 2.0中的issue之一,当scoped被取消时,它没有取消请求。此问题已解决。
ldioqlga2#
您可以检查项目是否可见,您可以加载图像,否则不加载它。
val state = rememberLazyListState()val fullyVisibleIndices: List<Int> by remember { derivedStateOf { val layoutInfo = state.layoutInfo val visibleItemsInfo = layoutInfo.visibleItemsInfo if (visibleItemsInfo.isEmpty()) { emptyList() } else { val fullyVisibleItemsInfo = visibleItemsInfo.toMutableList() val lastItem = fullyVisibleItemsInfo.last() val viewportHeight = layoutInfo.viewportEndOffset + layoutInfo.viewportStartOffset if (lastItem.offset + lastItem.size > viewportHeight) { fullyVisibleItemsInfo.removeLast() } val firstItemIfLeft = fullyVisibleItemsInfo.firstOrNull() if (firstItemIfLeft != null && firstItemIfLeft.offset < layoutInfo.viewportStartOffset) { fullyVisibleItemsInfo.removeFirst() } fullyVisibleItemsInfo.map { it.index } } }}LazyColumn( state = state, contentPadding = PaddingValues(30.dp)) { items(100) { index -> val isVisible by remember(index) { derivedStateOf { fullyVisibleIndices.contains(index) } } Text( index.toString(), modifier = Modifier .background(if (isVisible) Color.Green else Color.Transparent) .padding(30.dp) ) }}
val state = rememberLazyListState()
val fullyVisibleIndices: List<Int> by remember {
derivedStateOf {
val layoutInfo = state.layoutInfo
val visibleItemsInfo = layoutInfo.visibleItemsInfo
if (visibleItemsInfo.isEmpty()) {
emptyList()
} else {
val fullyVisibleItemsInfo = visibleItemsInfo.toMutableList()
val lastItem = fullyVisibleItemsInfo.last()
val viewportHeight = layoutInfo.viewportEndOffset + layoutInfo.viewportStartOffset
if (lastItem.offset + lastItem.size > viewportHeight) {
fullyVisibleItemsInfo.removeLast()
}
val firstItemIfLeft = fullyVisibleItemsInfo.firstOrNull()
if (firstItemIfLeft != null && firstItemIfLeft.offset < layoutInfo.viewportStartOffset) {
fullyVisibleItemsInfo.removeFirst()
fullyVisibleItemsInfo.map { it.index }
LazyColumn(
state = state,
contentPadding = PaddingValues(30.dp)
) {
items(100) { index ->
val isVisible by remember(index) {
fullyVisibleIndices.contains(index)
Text(
index.toString(),
modifier = Modifier
.background(if (isVisible) Color.Green else Color.Transparent)
.padding(30.dp)
)
字符串
2条答案
按热度按时间stszievb1#
根据指南,在Coil 2.x中,他们已经做到了这一点。根据指南的这一部分
的数据
事实上,这是coil 2.0中的issue之一,当scoped被取消时,它没有取消请求。此问题已解决。
ldioqlga2#
您可以检查项目是否可见,您可以加载图像,否则不加载它。
字符串