Привет, народ! Давайте поговорим о сворачивании анимации при смахивании пользователем интерфейса приложения. Плохие новости. Нет собственного сворачивающегося вида аватара для сворачивающейся панели инструментов. Но для тебя! Я предварительно прочитал два потрясающих демо-примера сворачивания аватаров с подходом, в котором не используется пользовательский 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
Надеюсь, вам понравилось читать эту статью и вы многое из нее почерпнули. Если да, то не забудьте дать аплодисменты этим статьям.
Удачного кодирования !!