В прошлой статье мы разбирали как работать с простыми анимациями при помощи Animator’a. Сегодня подведем итоги и рассмотрим, как можно немного автоматизировать запуск анимаций.
Простая анимация. Animator - первая статья
Простая анимация. State View - вторая статья
Vector анимация. Стандартные решения – третья статья
VectorDrawable анимация. Управление анимацией. Хардкор – четвертая статья
Для этого нам нужно будет создать специальный класс, для управлениями анимациями при смене состояния view. Что сюда включается? К примеру, элемент был выключен (enable), выбран (selected), на него попадет фокус (focused), нажат (pressed) и прочие состояния. Единственный минус этого способа, он будет работать только на версиях Android 5 (API 21) и выше.
Приступим. Создадим файл state_animator.xml в res/animator. Внутри мы поместим код:
<?xml >
<selector >
<item >
<set >
<objectAnimator
>
<objectAnimator
>
</set>
</item>
<item
>
<set >
<objectAnimator
>
<objectAnimator
>
</set>
</item>
</selector>
Что мы сделали? Мы указали, что это разметка selector – то есть внутри у нас будет описаны анимации для разных состояний. Внутри у нас есть два item для состояния state_enabled="false" и state_enabled="true", то есть анимация, если картинка выключена и картинка включена. Внутри же item находится уже знакомый нам по прошлой статье objectAnimator (вы пробовали что-то анимировать уже? Надеюсь, что да).
Что делаем теперь? Нам необходимо где-то задействовать state_animator.xml. Где? В файле разметки активити или фрагмента. В моем случае в activity_main.xml. Ищем где у нас находится картинка и добавляем туда одну строку:
<ImageView
…
… />
Теперь также нужно менять состояние imageView. Сделаем это в коде при нажатии кнопки. Отследим нажатие и вставим туда одну строку кода (надеюсь, вы знаете, как это делать, если нет – пишите комментарии и я сделаю отдельную статью):
imageView.setEnabled(!imageView.isEnabled());
Посмотрим на результат?
Выводы:
При помощи Animator мы можем анимировать любые параметры объектов, а для некоторых из них есть удобные интерфейсы. Недостаток таких анимаций лишь один – в некоторой степени они требовательны к ресурсам.
Comments 6