Сайт разработчика Александра Климова

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Animation и Transition

Animation

Самый старый тип анимации, который сейчас считается устаревшим. Может встречаться в старых проектах или для несложных примеров.

Бывает двух видов:

Кроме собственных анимаций можно использовать встроенные ресурсы для анимаций:


@android:anim/slide_in_left
@android:anim/slide_out_right
android.R.anim.fade_in
android.R.anim.fade_out

Для создания реалистичных анимаций следует использовать класс Interpolator.

Примеры анимаций

ScaleAnimation и <scale>

AlphaAnimation и <alpha>

TranslateAnimation и <translate>

RotateAnimation и <rotate>

Класс AnimationUtils

Метод overridePendingTransition() - анимации между активностями

LayoutAnimation - Анимация разметки и групп компонентов

Анимация переходов у ViewFlipper

Анимация у ViewPager

Анимация кнопки

Анимация ListView и ListActivity

Анимация фрагментов

Animator

ValueAnimator

Появился в Android 3.0. Нужно указать начальное и конечное значение, далее указать слушатель, в котором будут приходить промежуточные значения, и тогда будет возможность применить анимацию.

Пара примеров для ValueAnimator

Падают, падают, падают листья (ValueAnimator)

ValueAnimator: Развернуть/свернуть панель

ValueAnimator (Kotlin)

ObjectAnimator

В Android 3.0 появился класс ObjectAnimator.

Позволяет создавать стандартные виды анимации (прозрачность, перемещение, масштабирование, цвет).

Статья об ObjectAnimator.

ObjectAnimator. Вычислители

ObjectAnimator. Состояния анимации

ObjectAnimator. Анимация шариков

Взрывная анимация

ViewPropertyAnimator

Появилась в Android 3.1 (API 12). Очень удобное использование - выбираете компонент и указываете цепочкой набор анимаций, которые выполняются параллельно или последовательно. Используется класс Animator.

Доступны анимации прозрачности, масштабирования, перемещения. Также можно установить длительность, задержку, интерполяторы.

Статья о ViewPropertyAnimator.

Ripple

Эффект Ripple появился в Android 5.0 и был доступен из коробки. Достаточно подключить нужный системный атрибут.


?android:attr/selectableItemBackground
?android:attr/selectableItemBackgroundBorderless

Также можно задать собственные виды эффекта при помощи RippleDrawable.

Статья о RippleDrawable.

createCircularReveal()

В Android 5.0 появился новый эффект появления, когда отображается или скрывается группа элементов интерфейса. Класс содержит всего один метод.

Класс ViewAnimationUtils и метод createCircularReveal().

AnimatedVectorDrawable

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

Читать статью о AnimatedVectorDrawable.

android.support.animation

support-dynamic-animation (Kotlin)

Transition

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

Класс TransitionDrawable (третий курс)

TransitionManager (шестой курс)

Scene (шестой курс)

Превращения между экранами активностей (Android 5.0, API 21) (седьмой курс)

Переход общих элементов между экранами активностей (Android 5.0, API 21) (седьмой курс)

Закрытая зона

Всплывающая панель (второй курс)

Анимация с использованием Matrix (второй курс)

TimeAnimator (второй курс)

Анимация диалоговых окон (третий курс)

Управляй мечтой (третий курс)

Новые анимации активностей в Android 4.1 (Jelly Bean) (третий курс)

animateLayoutChanges - Анимация при изменении разметки (четвёртый курс)

Динамическое добавление компонентов через анимацию (четвёртый курс)

Анимация при вращении устройства (Android 4.3) (пятый курс)

StateListAnimator (шестой курс)

Дополнительное чтение

Видео DevBytes: Cardflip Animation - анимация для игральных карт на основе ImageView. Исходник.

Видео DevBytes: Custom Activity Animations - GridLayout с превьюшками. При нажатии на картинку она всплывает в большом размере и пояснительным текстом. Исходник

Видео DevBytes: Animating ListView Deletion - Анимация при удалении элементов в ListView. Исходник

Codedependent: DevBytes: Anticipation & Overshoot, Part 2 - Мультяшная анимация при перемещении кнопки (видео и исходник)

Видео DevBytes Sliding Fragments - YouTube - Исходник

Видео DevBytes: Folding Layout - YouTube - эффект складывающей гармошки. Исходник

Библиотеки

MasayukiSuda/FPSAnimator: FPSAnimator is very easy animation library for Android TextureView and SurfaceView.

daimajia/AndroidViewAnimations

vpaliyX/Material-Motion: This repository contains examples of reveal animations - библиотека интересных эффектов.

race604/WaveLoading: A wave-like loading drawable

tangqi92/WaveLoadingView: An Android library providing to realize wave loading effect.

Реклама