Поделюсь с вами опытом попытки конфигурации анимаций для айтемов у Compose LazyColumn. Мы переписывали наш главный экран с XML+View на Jetpack Compose, который состоит из списка с различного рода сложности айтемами.
Все шло гладко, пока не пришлось добавить айтем, который должен был увеличиваться по высоте. Мы заметили, что нижние карточки смещались не в такт. Небольшой, но заметный рассинхрон, который сразу бросается в глаза.
Решение казалось очевидным: настроить
animateItem или написать свою реализацию. Мы перепробовали несколько вариантов через стандартный API, проваливались в исходники compose.foundation, писали кастомный модификатор. На каждом шаге казалось, что решение рядом, но каждый раз упирались в новый тупик.В статье разберем, почему возникает рассинхрон, как устроен механизм анимаций внутри LazyColumn, почему кастомный
animateItem обречен с самого начала и к какому решению мы пришли в итоге.Статья: https://habr.com/ru/companies/tbank/articles/1009014/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
