Android анимации. Часть 1. Animator
В этой серии статей хочу рассказать о том, как можно пользоваться различными анимациями в андроид разработке. Эта статья посвящена классу Animator.
Простая анимация. Animator - первая статья
Простая анимация. State View - вторая статья
Vector анимация. Стандартные решения – третья статья
VectorDrawable анимация. Управление анимацией. Хардкор – четвертая статья
Если ваша задача лишь сдвинуть какой-то объект, изменить его размер или его прозрачность, то можно использовать класс Animator и его наследников. При помощи них можно анимировать изменение свойств различных view.
Абстрактный класс Animator имеет несколько наследников:
ValueAnimator — базовый класс анимации, при помощи которого можно анимировать любое свойство.
ObjectAnimator — упрощённый интерфейс для анимации свойств View. Имеет список различных свойств, которые мы можем менять. В документации указаны: смещение относительно размещения в layout (translationX и translationY), вращение (rotationX и rotationY), смещение центра для вращения (pivotX и pivotY), масштабирование (scaleX и scaleY), расположение относительно границ экрана с левого верхнего угла (x и y), прозрачность (alpha).
Есть еще один удобный интерфейс для анимации View. Он не унаследован от Animator, однако им можно легко воспользоваться через view.animate() - ViewPropertyAnimator.
Давайте попрактикуемся!
Анимацию можно создать в коде:
ObjectAnimator animationX = ObjectAnimator.ofFloat(imageView, "scaleX", 1F);
ObjectAnimator animationY = ObjectAnimator.ofFloat(imageView, "scaleY", 1F);
AnimatorSet set = new AnimatorSet();
set.play(animationX).with(animationY);
set.setDuration(3000);
set.start();
Или так:
imageView.animate().setDuration(3000).scaleX(1).scaleY(1);
А можно и в xml:
Создадим файл show_animator.xml в res/animator в котором сохраним вот такой код:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">
<objectAnimator
android:duration="3000"
android:propertyName="scaleX"
android:valueTo="1"
android:valueType="floatType"
android:interpolator="@android:anim/decelerate_interpolator"/>
<objectAnimator
android:duration="3000"
android:propertyName="scaleY"
android:valueTo="1"
android:valueType="floatType"
android:interpolator="@android:anim/decelerate_interpolator"/>
</set>
А теперь запустим ее в коде:
Animator set = AnimatorInflater.loadAnimator(this, R.animator.show_animator);
set.setTarget(imageView);
set.start();
Результат будет один и тот же:
Отлично! Мы поменяли с вами масштаб картинки – scaleX и scaleY. Также мы смогли задать скорость анимации – 3с (duration – 3000 мс). Это оказалось совсем не сложно, попробуйте теперь сами.