Как стать автором
Обновить

Комментарии 4

Сам не пользовался, но вот как раз интересно не помог ли бы здесь будущий MotionLayout?
Здравствуйте! Использовать MotionLayout для решения таких задач можно. Для этого вам понадобится:
1. Описать в MotionScene с помощью ConstrantSet размеры, положение и форму ваших childView для каждого задуманного крайнего состояния анимации (или сделать это программно)
2. Описать в MotionScene с помощью Transition последовательность переходов между ConstrantSet и области для совершения свайпов.
3.Имплементировать интерфейс MotionLayout.TransitionListener для программного добавления Transition (для зацикливания анимации пролистывания) и для вызова событий динамического биндинга ChildView.
4.Реализовать удобную для вас модель DataBinding, например, с помощью AndroidX LiveData или Rx-Java.
Вот что получилось у меня:
image
Предпочел описанный в статье подход, потому что использование MotionLayout в качестве замены специального ViewGroup для работы с коллекциями, предполагает разработку полноценного адаптера и собственного ViewGroup. В общем, задача очень трудоемкая, если решение должно получиться качественным.
Спасибо за интересный вопрос!
Здорово, спасибо, что попробовали. А в тот же проект на отдельную ветку можете добавить пример и с MotionLayout?
Когда пробовал работать с MotionLayout и философией ConstraintLayout2.0, я слишком поздно понял, что не стоит увлекаться описанием ConstraintSet для такой сложной анимации в xml. В общем, у меня получился настоящий god-xml, который было очень сложно поддерживать. Начал делать программную динамическую верстку и улучшать DataBinding, и вот тогда осознал конечную стоимость качественного решения на MotionLayout. В общем, даже не коммитил этот код. Видеозаписи, которую я вставил в ответ, уже несколько месяцев.
Вообще, фреймворк отличный. Думаю он быстро станет фаворитом в создании сложной анимации. Если хотите пощупать MotionLayout, но не знаете с чего начать, очень вам рекомендую статью на harb «MotionLayout: анимации лучше, кода — меньше». Она полностью базируется на том подходе, который я описал выше
Зарегистрируйтесь на Хабре, чтобы оставить комментарий