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 
    >
    <objectAnimator

       >

    <objectAnimator

       >
</set>

А теперь запустим ее в коде:

Animator set = AnimatorInflater.loadAnimator(this, R.animator.show_animator);
set.setTarget(imageView);
set.start();

Результат будет один и тот же:

Отлично! Мы поменяли с вами масштаб картинки – scaleX и scaleY. Также мы смогли задать скорость анимации – 3с (duration – 3000 мс). Это оказалось совсем не сложно, попробуйте теперь сами.


Comments 3


Привет!

26.02.2018 17:46
0