Главная » Разработка для Android » Создание анимации, основанной на расчете промежуточных кадров

0

Анимация,  основанная  на расчете промежуточных кадров, создается с помощью класса Animation.  В приведенном  списке описываются типы доступных анимационных преобразований.

AlphaAnimation. Позволяет анимировать изменение  прозрачности

Представления (полупрозрачность или смешивание альфа-канала).

RotateAnimation. Предоставляет возможность вращать  выбранное

Представление в плоскости XY.

ScaleAnimation. Позволяет масштабировать Представление в обе сто- роны.

TranslateAnimation. Разрешает перемещать выбранное Представление по экрану (хотя оно будет отрисовываться только в первоначальных своих границах).

Android предоставляет класс AnimationSet для группировки и настройки анимации в виде коллекции. Вы можете задать время запуска и продолжи- тельность анимации,  используемой в данной коллекции, чтобы управлять синхронизацией и порядком  воспроизведения анимационной последова- тельности.

ПРИМЕЧАНИЕ

Важно установить начальное смещение и продолжительность для каждой дочерней анимации, иначе все они станут запускаться и завер- шаться одновременно.

В листингах 15.12 и 15.13 показано, как создать одну и ту же анимацион- ную последовательность двумя способами: внутри кода программы и в виде внешнего ресурса.

Листинг 15.12. Создание анимации,  основанной  на расчете промежуточных кадров, программным  способом

// Создайте объект AnimationSet

AnimationSet myAnimation = new AnimationSet(true);

// Создайте анимацию вращения.

RotateAnimation rotate = new RotateAnimation(0, 360, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f);

rotate.setFillAfter(true);

rotate.setDuration(1000);

// Создайте анимацию масштабирования.

Продолжение ?

Листинг 15.12 (продолжение)

ScaleAnimation scale = new ScaleAnimation(1, 0,

1, 0, ScaleAnimation.RELATIVE_TO_SELF,

0.5f, ScaleAnimation.RELATIVE_TO_SELF,

0.5f);

scale.setFillAfter(true); scale.setDuration(500); scale.setStartOffset(500);

// Создайте анимацию изменения альфа-канала. AlphaAnimation alpha = new AlphaAnimation(1, 0); scale.setFillAfter(true);

scale.setDuration(500);

scale.setStartOffset(500);

// Добавьте все созданные анимации в коллекцию. myAnimation.addAnimation(rotate); myAnimation.addAnimation(scale); myAnimation.addAnimation(alpha);

В приведенном  фрагменте  кода реализована та же анимационная по- следовательность, которая показана в листинге 15.13.

Листинг 15.13. Описание  анимации,  основанной  на расчете промежуточных кадров, с помощью XML

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="true">

<rotate

android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" android:startOffset="0"

android:duration="1000" />

<scale android:fromXScale="1.0" android:toXScale="0.0" android:fromYScale="1.0" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="500" android:duration="500" />

<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:startOffset="500" android:duration="500" />

</set>

Как видно, создание  анимационных последовательностей становится более простым и интуитивным, если использовать внешние ресурсы.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии