Эффективный способ анимации больших изменений содержимого в 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()
      }
    }
  }
}

0 ответов