Привет, народ! Давайте поговорим о сворачивании анимации при смахивании пользователем интерфейса приложения. Плохие новости. Нет собственного сворачивающегося вида аватара для сворачивающейся панели инструментов. Но для тебя! Я предварительно прочитал два потрясающих демо-примера сворачивания аватаров с подходом, в котором не используется пользовательский CoordinatorLayoutBehavior!

демонстрация 1

демонстрация 2

Вы можете просмотреть весь код в моем репозитории на github CollapsingAvatarToolbarSample.

Итак, позвольте мне объяснить код. Вместо использования пользовательского CoordinatorLayoutBehavior я использую OnOffsetChangedListener из AppBarLayout.

Вот отрывок. В методе updateViews я меняю представления с помощью вычисленного смещения:

Демонстрация анимации аватара 1

В первой демонстрации для анимированного сворачивающегося аватара необходимо определить, когда аватар перешел наверх и начал сворачиваться.

Итак, необходимо найти avatarAnimateStartPointY и avatarCollapseAnimationChangeWeight (для преобразования общего смещения в смещение анимации аватара):

Чтобы преобразовать общее смещение в смещение изменения аватра с помощью avatarCollapseAnimationChangeWeight:

Итак, в методе updateViews посмотрите, как аватар меняет размер при изменении положения аватара по оси X, Y:

Avatar animate demo 2

В демо 2 avtar изменил свой размер, а затем анимированное движение вправо в один момент с текстом на верхней панели инструментов стало отображаться и перемещаться влево.

Вам необходимо отслеживать состояния: TO_EXPANDED_STATE, изменение TO_COLLAPSED_STATE, WAIT_FOR_SWITCH.

Создать анимацию для аватара при смене переключателя состояния:

Просмотреть образцы на GitHub https://github.com/SergeyBurlaka/CollapsingA

Надеюсь, вам понравилось читать эту статью и вы многое из нее почерпнули. Если да, то не забудьте дать аплодисменты этим статьям.

Удачного кодирования !!