Простая анимация на андроид с исходным кодом. Добавление анимации на основе физики в Android приложения

Анимации, которые кажутся подвижными и реалистичными, как правило, делают пользовательские интерфейсы более привлекательными. Неудивительно, что Material Design уделяет им столько внимания!

Однако, если вы когда-либо пробовали создавать такие анимации, вы знаете, что простые аниматоры и интерполяторы, предлагаемые Android SDK, часто не достаточно хороши. Вот почему недавние версии Android Support Library поставляются с физическим модулем Dynamic Animation (динамичная анимация).

С помощью Dynamic Animation вы можете создавать анимации на основе физики, которые очень напоминают движения объектов в реальном мире. Вы также можете заставить их реагировать на действия пользователя в режиме реального времени. В этом уроке я покажу вам, как создать несколько таких анимаций.

Необходимые условия

Чтобы следовать уроку, убедитесь, что у вас есть следующее:

  • Android Studio 3.0 Canary 4 или выше
  • Устройство или эмулятор под управлением Android 4.4 или более поздней версии

1. Добавление зависимостей

Чтобы иметь возможность использовать Dynamic Animation в вашем проекте, вы должны добавить его как зависимость implementation в файле build.gradle вашего модуля app:

Implementation "com.android.support:support-dynamic-animation:26.0.0-beta2"

В этом уроке мы собираемся анимировать виджет ImageView . Разумеется, он должен отображать некоторые изображения, поэтому откройте Vector Assets Studio и добавьте в свой проект следующие Material значки:

  • нейтральное настроение
  • настроение очень удовлетворено

Вот как они выглядят:

Для получения наилучших результатов я предлагаю установить размер значков 56 x 56 dp .

2. Создание анимации Fling

Когда вы подбрасываете объект в реальном мире, вы задаете ему большой импульс (момент движения). Поскольку импульс это не что иное, как произведение массы и скорости, изначально объект будет иметь высокую скорость. Постепенно, впрочем, благодаря трению, он замедляется, пока он не перестанет двигаться полностью. Используя класс FlingAnimation от Dynamic Animation, вы можете имитировать это поведение в своём приложении.

Для демонстрации давайте теперь создадим макет, содержащий всплывающий виджет ImageView , отображающий значок и виджет Button , который пользователи могут нажать, чтобы вызвать анимацию fling. Если вы разместите их внутри виджета RelativeLayout , ваш XML-файл макета будет выглядеть так: