Ресурс анимации

Ресурс анимации может описывать два типа анимации:

Анимация свойств
Создает анимацию с помощью модификации свойств объекта в течение заданного периода с помощью класса Animator.
Анимация визуального компонента

Существует два типа анимации для визуальных компонентов:

  • Tween-анимация: создает анимацию путем выполнения серии трансформаций единственного изображения с помощью объекта Animation.
  • Кадровая анимация: создает анимацию с помощью упорядоченной последовательности изображений, используя объект AnimationDrawable.

Анимация свойств

Анимация описывается в XML файле и модифицирует свойства объекта, такие как фон или прозрачность.

МЕСТОПОЛОЖЕНИЕ ФАЙЛА:

res/animator/filename.xml

Имя файла, которое будет использоваться в качестве идентификатора ресурса

ТИП ДАННЫХ РЕСУРСА ПОСЛЕ КОМПИЛЯЦИИ:
Указатель на объекта типа ValueAnimator, ObjectAnimator или AnimatorSet.
ССЫЛКА НА РЕСУРС:

В Java: R.animator.filename

В XML: @[package:]animator/filename

СИНТАКСИС:

Файл должен иметь единственный корневой элемент: <set>, <objectAnimator> или <valueAnimator>. Вы можете группировать элементы вместе внутри элемента <set>, включая другие элементы <set>.

ЭЛЕМЕНТЫ:
<set>

Контейнер, содержащий остальные элементы анимации (<objectAnimator>, <valueAnimator> или вложенные элементы <set>). Представляет объект типа AnimatorSet.

Вы можете использовать вложенные элементы <set> для группировки других элементов. Каждый элемент <set> может содержать атрибут ordering.

Атрибуты:

android:ordering

Указывает порядок анимации в данном наборе.

Значение Описание
sequentially Проигрывает анимацию набора последовательно.
together (по умолчанию) Проигрывает анимацию набора одновременно.
<objectAnimator>

Анимирует определенное свойство объекта за указанный промежуток времени. Определяет объект типа ObjectAnimator.

Атрибуты:

android:propertyName
Тип: string.Обязательный. Имя свойства для анимации. Например, вы можете указать "alpha" или "backgroundColor" для визуального объекта. Элемент objectAnimator не содержит атрибут target, так что вы не сможете установить объект анимации в XML. Выполнение анимации начинается с вызова метода loadAnimator() и установки объекта, включающего данное свойство, с помощью метода setTarget().
android:valueTo
Тип: float, int или color. Обязательный. Значение свойства, на котором заканчивается анимация. Цвет представлен в виде шести цифр в 16-ричном коде (например #333444).
android:valueFrom
Тип: float, int или color. Значение свойства, с которого начинается анимация. Если атрибут не указан, анимация начинается со значения, возвращаемого get-методом свойства. Цвет представлен в виде шести цифр в 16-ричном коде (например #333444).
android:duration
Тип: int. Время анимации в миллисекундах. По умолчанию 300мс.
android:startOffset
Тип: int. Задержка анимации в миллисекундах после вызова метода start().
android:repeatCount
Тип: int. Количество повторов анимации. Принимает значение -1 для бесконечного числа повторений или положительное число. К примеру 1 – значит одно повторение, то есть в итоге анимация будет проигрываться два раза. Значение по умолчанию 0.
android:repeatMode
Поведение анимации при достижении конца. Работает только если атрибут android:repeatCount не равен нулю. Может принимать значение reverse для проигрывания анимации в обратном направлении при каждом повторении или repeat, чтобы при повторении начинать анимацию сначала.
android:valueType

Тип значения. Не указывайте данный атрибут для значений цвета. Может принимать значения:

Значение Описание
intType Значение имеет целочисленный тип.
floatType (по умолчанию) Значение задается числом с плавающей точкой.
<animator>

Представляет объект типа ValueAnimator.

Атрибуты:

android:valueTo
Тип: float, int или color. Обязательный. Значение свойства, на котором заканчивается анимация. Цвет представлен в виде шести цифр в 16-ричном коде (например #333444).
android:valueFrom
Тип: float, int или color. Значение свойства, с которого начинается анимация. Если атрибут не указан, анимация начинается со значения, возвращаемого get-методом свойства. Цвет представлен в виде шести цифр в 16-ричном коде (например #333444).
android:duration
Тип: int. Время анимации в миллисекундах. По умолчанию 300мс.
android:startOffset
Тип: int. Задержка анимации в миллисекундах после вызова метода start().
android:repeatCount
Тип: int. Количество повторов анимации. Принимает значение -1 для бесконечного числа повторений или положительное число. К примеру 1 – значит одно повторение, то есть в итоге анимация будет проигрываться два раза. Значение по умолчанию 0.
android:repeatMode
Поведение анимации при достижении конца. Работает только если атрибут android:repeatCount не равен нулю. Может принимать значение reverse для проигрывания анимации в обратном направлении при каждом повторении или repeat, чтобы при повторении начинать анимацию сначала.
android:valueType

Тип значения. Не указывайте данный атрибут для значений цвета. Может принимать значения:

Значение Описание
intType Значение имеет целочисленный тип.
floatType (по умолчанию) Значение задается числом с плавающей точкой.
ПРИМЕР:

XML файл res/animator/property_animator.xml

Для запуска анимации необходимо применить данный XML файл к объекту AnimatorSet в коде, а затем установить целевые объекты для всех описанных видов анимации. Вызов метода setTarget() для удобства устанавливает единый целевой объект для всех дочерних элементов AnimatorSet. Следующий код показывает как это делается:

СМОТРИТЕ ТАКЖЕ:
Демонстрационные примеры использования анимации свойств.

Анимация визуальных компонентов

Фреймворк анимации поддерживает оба типа анимации: tween-анимацию и кадровую анимацию, и оба этих типа могут быть описаны с помощью XML.

Tween анимация

Данная анимация позволяет выполнять действия вроде вращения, плавного исчезновения, движения и растягивания графики.

МЕСТОПОЛОЖЕНИЕ ФАЙЛА:

res/anim/filename.xml

Имя файла используется в качестве идентификатора ресурса.

ТИП РЕСУРСА ПОСЛЕ КОМПИЛЯЦИИ:
Указатель на объект типа Animation.
ССЫЛКИ НА РЕСУРС:

В Java: R.anim.filename

В XML: @[package:]anim/filename

СИНТАКСИС:

Файл должен иметь единственный корневой элемент: <alpha>, <scale>, <translate>, <rotate>, или <set>.

ЭЛЕМЕНТЫ:
<set>

Контейнер, содержащий другие элементы анимации (<alpha>, <scale>, <translate>, <rotate>, или вложенные элементы<set>). Представляет объект типа AnimationSet.

Атрибуты:

android:interpolator
Ссылка на ресурс типа interpolator. Объект типа Interpolator. Это может быть стандартный интерполятор из набора платформы, или ваш собственный. Подробности описаны в данном документе ниже по тексту.
android:shareInterpolator
Тип: boolean. “true” если вы хотите использовать данный интерполятор для всех дочерних элементов.
<alpha>
Анимация постепенного исчезновения или появления (fade-in / fade-out). Представляет объект типа AlphaAnimation.

Атрибуты:

android:fromAlpha
Тип: float. Начальное значение прозрачности, где 0.0 – полная прозрачность, 1.0 – полная непрозрачность.
android:toAlpha
Тип: float. Конечное значение прозрачности, где 0.0 – полная прозрачность, 1.0 – полная непрозрачность.

Подробнее об атрибутах элемента <alpha> смотрите в описании класса Animation.

<scale>

Анимация изменения размера. Вы можете указать точку изображения, из которой оно будет расти (или уменьшаться), с помощью атрибутов pivotX и pivotY. Например, для значений 0,0 (верхний левый угол), объект будет расти вправо вниз. Представляет объект типа ScaleAnimation.

Атрибуты:

android:fromXScale
Тип: float. Начальное смещение X, где 1.0 – не изменяется.
android:toXScale
Тип: float. Конечное смещение X, где 1.0 – не изменяется.
android:fromYScale
Тип: float. Начальное смещение Y, где 1.0 – не изменяется.
android:toYScale
Тип: float. Конечное смещение Y, где 1.0 – не изменяется.
android:pivotX
Тип: float. Координата X, зафиксированная при масштабировании объекта.
android:pivotY
Тип: float. Координата Y, зафиксированная при масштабировании объекта.

Подробнее об атрибутах элемента <scale> смотрите в описании класса Animation.

<translate>

Вертикальное и горизонтальное движение. Поддерживается любой из трех форматов значения атрибутов: значения от -100% до 100% указывают относительный размер по отношению к самому себе; значения от -100%p до 100%p указывают относительный размер по отношению к родителю; значение с плавающей запятой показывает абсолютное значение. Представляет объект типа TranslateAnimation.

Атрибуты:

android:fromXDelta
Тип Float или процент. Начальное смещение X.
android:toXDelta
Тип Float или процент. Конечное смещение X.
android:fromYDelta
Тип Float или процент. Начальное смещение Y.
android:toYDelta
Тип Float или процент. Конечное смещение Y.

Подробнее об атрибутах элемента <translate> смотрите в описании класса Animation.

<rotate>

Анимация вращения. Представляет объект типа RotateAnimation.

Атрибуты:

android:fromDegrees
Тип: float. Начальное угловое положение в градусах.
android:toDegrees
Тип: float. Конечное угловое положение в градусах.
android:pivotX
Тип: float или проценты. Координата X точки вращения.
android:pivotY
Тип: float или проценты. Координата Y точки вращения.

Подробнее об атрибутах элемента <rotate> смотрите в описании класса Animation.

ПРИМЕР:

XML файл res/anim/hyperspace_jump.xml

В следующем примере анимация применяется к объекту ImageView:

СМОТРИТЕ ТАКЖЕ:
2D графика: tween-анимация.

Интерполяторы

Интерполятор это объект для изменения анимации, который описывает в XML, что влияет на скорость изменения анимации. Это позволяет ускорять, замедлять, повторять и выполнять другие операции с существующими эффектами анимации.

Интерполяторы применяются к элементам анимации с помощью атрибута android:interpolator, который указывает на ресурс интерполятора.

Все интерполяторы, доступные в Android, являются подклассами базового класса Interpolator. Для каждого класса интерполятора Android содержит публичный ресурс, на который вы можете ссылаться при создании анимации. Следующая таблица содержит доступные значения:

Класс интерполятора Идентификатор ресурса
AccelerateDecelerateInterpolator @android:anim/accelerate_decelerate_interpolator
AccelerateInterpolator @android:anim/accelerate_interpolator
AnticipateInterpolator @android:anim/anticipate_interpolator
AnticipateOvershootInterpolator @android:anim/anticipate_overshoot_interpolator
BounceInterpolator @android:anim/bounce_interpolator
CycleInterpolator @android:anim/cycle_interpolator
DecelerateInterpolator @android:anim/decelerate_interpolator
LinearInterpolator @android:anim/linear_interpolator
OvershootInterpolator @android:anim/overshoot_interpolator

Атрибут android:interpolator может быть задан следующим образом:

Собственные интерполяторы

Если вас не устраивают стандартные интерполяторы Android, вы можете создать собственные. Например, вы можете регулировать скорость разгона для AnticipateInterpolator или изменить количество циклов для CycleInterpolator. Все, что нужно, это создать собственный XML ресурс интерполятора.

МЕСТОПОЛОЖЕНИЕ ФАЙЛА:

res/anim/filename.xml

Имя файла служит идентификатором ресурса.

ТИП ДАННЫХ РЕСУРСА ПОСЛЕ КОМПИЛЯЦИИ:
Указатель на объект-интерполятор соответствующего класса.
ССЫЛКА НА РЕСУРС:
В XML: @[package:]anim/filename
СИНТАКСИС:

Если вы не укажете атрибуты, интерполятор будет работать точно также как стандартный.

ЭЛЕМЕНТЫ:

Каждый элемент Interpolator в XML начинается с его имени в нижнем регистре.

<accelerateDecelerateInterpolator>

Скорость изменения медленно начинается и заканчивается, но ускоряется в середине. Не имеет атрибутов.

<accelerateInterpolator>

Скорость изменения начинается медленно, затем увеличивается.

Аатрибуты:

android:factor
Тип: float. Коэффициент ускорения. По умолчанию 1.
<anticipateInterpolator>

Изменение начинается в обратную сторону, а затем бросается вперед.

Атрибуты:

android:tension
Тип: float. Количество бросков. По умолчанию 2.
<anticipateOvershootInterpolator>

Изменение начинается в обратную сторону, затем бросается вперед, проскакивает целевое значение, а затем устанавливает его.

Атрибуты:

android:tension
Тип: float. Количество бросков. По умолчанию 2.
android:extraTension
Тип: float. Сумма, на которую умножить количество бросков. По умолчанию 1.5.
<bounceInterpolator>
Отскок в конце. Не имеет атрибутов.
<cycleInterpolator>

Повтор анимации заданное число раз. Скорость изменения следует синусоидальному закону.

Атрибуты:

android:cycles
Количество циклов (по умолчанию 1).
<decelerateInterpolator>

Сначала быстрый старт, а затем замедление

Атрибуты:

android:factor
Коэффициент замедления (по умолчанию 1).
<linearInterpolator>
Коэффициент изменения константа. Не имеет атрибутов.
<overshootInterpolator>

Изменение бросается вперед, проскакивает целевое значение, а затем возвращается к нему.

Атрибуты:

android:tension
Тип: float. Количество бросков. По умолчанию 2.
ПРИМЕР:

XML файл res/anim/my_overshoot_interpolator.xml

XML анимации может использовать интреполятор следующим образом:

Кадровая анимация

Анимация для показа последовательности изображений, может быть описана в XML файле.

МЕСТОПОЛОЖЕНИЕ ФАЙЛА:

res/drawable/filename.xml

Имя файла служит идентификатором ресурса.

ТИП РЕСУРСА ПОСЛЕ КОМПИЛЯЦИИ:
Указатель на объект типа AnimationDrawable.
ССЫЛКА НА РЕСУРС:

В Java: R.drawable.filename

XML: @[package:]drawable.filename

СИНТАКСИС:
ЭЛЕМЕНТЫ:
<animation-list>

Обязательный. Это корневой элемент, который может включать один или более элементов <item>.

Атрибуты:

android:oneshot
Тип: boolean. “true” если вы хотите выполнить анимацию однократно, “false” – в цикле.
<item>

Описывает один кадр анимации. Должен находиться внутри элемента <animation-list>.

Атрибуты:

android:drawable
Содержит ссылку на ресурс типа drawable, в котором описан объект для данного кадра.
android:duration
Целое число, указывающее длительность кадра в миллисекундах.
ПРИМЕР:

XML файл res/anim/rocket.xml

Пример использования в коде приложения:

СМОТРИТЕ ТАКЖЕ:
2D графика: tween-анимация.

Добавить комментарий