Главная » Разработка для Android » Анимация разметки и Групп представлений

0

Класс  LayoutAnimation нужен  для применения анимации  к Группам представлений: передает одиночный  объект Animation  (или  AnimationSet)

для каждого дочернего Представления в заранее  определенной  последова- тельности.

Используйте объект LayoutAnimationController для задания  объекта Animation  (или  AnimationSet), который  применяется к каждому  Пред- ставлению в группе. Ко всем Представлениям, содержащим этот объект, будет применена одна и та же анимация, но вы можете задействовать LayoutAnimationController для указания порядка  и времени запуска для каждого Представления.

Для этих целей в Android предусмотрено два класса:

LayoutAnimationController — позволяет  выбирать  начальный  сдвиг для каждого Представления (в миллисекундах) и порядок  (нормаль- ный, обратный  или случайный), в каком анимация  применится для каждого дочернего элемента;

GridLayoutAnimationController — как производный класс назначает анимационную последовательность для дочерних Представлений с ис- пользованием ссылки на строки и столбцы.

Создание анимации для разметки. Чтобы создать новую анимацию для разметки, нужно определить ее для каждого дочернего Представления. После создайте  новый элемент  LayoutAnimation (либо  в коде программы,  либо в виде внешнего ресурса), ссылающийся на ранее выполненную анимацию и описывающий порядок и время срабатывания, с которыми ее необходимо применить.

В листинге  15.16 показано  определение  простой анимации,  она хра- нится  в виде файла  popin.xml в каталоге  res/anim, а также  описание LayoutAnimation из файла popinlayout.xml.

Элемент LayoutAnimation в случайном  порядке  применяет всплываю- щую анимацию к каждому дочернему Представлению заданной группы.

Листинг 15.16. Создание анимации  для разметки

res/anim/popin.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">

<scale

android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:duration="400"

/>

</set>

res/anim/popinlayout.xml

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"

android:delay="0.5" android:animationOrder="random" android:animation="@anim/popin"

/>

Использование  анимации для разметки. После  описания  элемента LayoutAnimation можете применить  его к Группе представлений (в коде программы или с помощью ресурса в формате XML). В XML это делается путем добавления атрибута android:layoutAnimation к определению разметки:

android:layoutAnimation="@anim/popinlayout"

Чтобы применить анимацию для разметки в коде программы, вызовите метод setLayoutAnimation из объекта ViewGroup,  передавая ему ссылку на соответствующий экземпляр LayoutAnimation.

В обоих случаях  анимация  выполнится один раз, при первом появле- нии Группы представлений. Вы можете вызвать ее повторно, запустив метод scheduleLayoutAnimation из объекта ViewGroup. Таким образом, анимация выполнится при следующем появлении Группы представлений.

Анимация  для разметки  также имеет поддержку  интерфейса Anima- tionListener.

В листинге 15.17 показан повторный запуск анимации в контексте Группы представлений с помощью интерфейса AnimationListener, который исполь- зуется  для выполнения дополнительных действий  по завершении изна- чальной анимации.

Листинг 15.17. Использование интерфейса AnimationListener и анимации  для разметки

aViewGroup.setLayoutAnimationListener(new AnimationListener() {

public void onAnimationEnd(Animation _animation) {

// TODO: Действия, выполняемые по завершении выполнения анимации.

}

public void onAnimationRepeat(Animation _animation) {}

public void onAnimationStart(Animation _animation) {}

});

aViewGroup.scheduleLayoutAnimation();

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

По теме:

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