Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
mstorm
6 лет назад

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 мс). Это оказалось совсем не сложно, попробуйте теперь сами.

7
0.000 GOLOS
На Golos с February 2018
Комментарии (3)
Сортировать по:
Сначала старые