Эффективный способ анимации больших изменений содержимого в LazyColumn
У меня есть полностью функциональный список, содержащий сложный элемент... то есть список сложных составных элементов. я использую
LazyColumn
для работы, но затем я хотел позволить пользователю долго нажимать на элемент, а затем изменять его содержимое и фон.
С использованием
animateColorAsState()
, фон плавно переходит, но так как я использовал
Layout
для рендеринга каждого элемента, потому что это зависит от всего уникального алгоритма позиционирования, я сделал что-то вроде этого, чтобы анимировать изменения:
var selected: Boolean = ... // Consider this a state-holder, it will correctly change on long-pressing
Layout(
content = {
// I render here based on the state.
if (selected){ Render1() }
else Render2()
}
){
// Using the same for positioning here
layout(...){
if(selected)
positionRender1()
else positionRender2()
}
}
Кажется, здесь это работает, как и ожидалось, но вопрос в том, что лучше для производительности - то, что выше, или то, что ниже?. Кроме того, объяснение вместе с ответом будет оценено.
var selected: Boolean = ... // Consider this a state-holder, it will correctly change on long-pressing
AnimatedContent(targetState = selected){
if(it)
Layout( content = { Render1() } ){
layout(...){
positionRender1()
}
}
else
Layout( content = { Render2() } ){
layout(...){
positionRender2()
}
}
}
}