По какой-то причине происходит 2 перекомпостирования, в результате чего невозможно установить условие для проверки элемента, был ли он уже представлен пользователю.
Я хотел бы сделать вот такая анимация для LazyGrid (пытался немного оптимизировать свой код, но смысл тот же) - https://yasinkacmaz.medium.com/simple-i ... 316992af22
Создание эффекта пузыря
Вот мой код:
@Composable
private fun Gallery(
paddingValues: PaddingValues,
uiConfig: () -> List
) {
val config: List = uiConfig()
val columns = 2
// Remember a set of already animated indices
val animatedIndices = remember { mutableSetOf() }
Column(
modifier = Modifier
.fillMaxSize()
.padding(paddingValues)
) {
LazyVerticalGrid(
columns = GridCells.Fixed(columns),
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.spacedBy(8.dp),
horizontalArrangement = Arrangement.spacedBy(8.dp),
content = {
items(config.size) { idx ->
val item: String = config[idx]
// Determine if the item should animate
val shouldAnimate = !animatedIndices.contains(idx)
// If it should animate, mark it as animated
if (shouldAnimate) {
animatedIndices.add(idx)
}
val (scale, alpha) = if (shouldAnimate) {
scaleAndAlpha(idx, columns)
} else {
1f to 1f // No animation
}
MyItem(
modifier = Modifier.graphicsLayer(alpha = alpha, scaleX = scale, scaleY = scale),
text = item
)
}
}
)
}
}
Но проблема в том, что рекомпозиция здесь происходит дважды — items(config.size) { idx ->, что делает условие бесполезным.
Что мне здесь не хватает?
По какой-то причине происходит 2 перекомпостирования, в результате чего невозможно установить условие для проверки элемента, был ли он уже представлен пользователю. Я хотел бы сделать вот такая анимация для LazyGrid (пытался немного оптимизировать свой код, но смысл тот же) - https://yasinkacmaz.medium.com/simple-item-animation-with-jetpack-composes-lazygrid-78316992af22 Создание эффекта пузыря Вот мой код: [code]private val dataSet: List = listOf("Item 1", "Item 2", "Item 3", "Item 4", "Item 5") private val data: List = List(5) { dataSet }.flatten()
// Determine if the item should animate val shouldAnimate = !animatedIndices.contains(idx)
// If it should animate, mark it as animated if (shouldAnimate) { animatedIndices.add(idx) }
val (scale, alpha) = if (shouldAnimate) { scaleAndAlpha(idx, columns) } else { 1f to 1f // No animation }
MyItem( modifier = Modifier.graphicsLayer(alpha = alpha, scaleX = scale, scaleY = scale), text = item ) } } ) } } [/code] Но проблема в том, что рекомпозиция здесь происходит дважды — items(config.size) { idx ->, что делает условие бесполезным. Что мне здесь не хватает?
По какой-то причине происходит 2 перекомпостирования, в результате чего невозможно установить условие для проверки элемента, был ли он уже представлен пользователю.
Я хотел бы сделать вот такая анимация для LazyGrid (пытался немного оптимизировать...
Я трахал голову по этой проблеме уже почти неделю. Моя цель состоит в том, чтобы создать бесконечный список прокрутки, который, когда пользователь достигнет начала или конца, быстро загрузит больше данных в память и расширяет список. LazyVStack ....
Я трахал голову по этой проблеме уже почти неделю. Моя цель состоит в том, чтобы создать бесконечный список прокрутки, который, когда пользователь достигнет начала или конца, быстро загрузит больше данных в память и расширяет список. LazyVStack ....
Во -первых, позвольте мне начать с того, что я пытаюсь преобразовать большой проект ASP.Net Web API из .NET 4.8, EF Core 7 в .net 8 и EF Core 8. При этом я заметил, что большая часть кода приложения работает хорошо после переноса. Мы используем...
Во -первых, позвольте мне начать с того, что я пытаюсь преобразовать большой проект ASP.Net Web API из .NET 4.8, EF 6 в .NET 8 и EF CORE 8. При этом я заметил, что большая часть кода приложения работает хорошо после переноса. Мы используем ленивые...