Освой Android играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Считается, что продолжительность анимации должна находиться в пределах от 200 до 500 миллисекунд. Это связано с особенностями человеческого мозга - если длительность будет меньше, то анимация воспринимается как слишком быстрая, а если больше - то слишком медленная. Согласно правилам Material Design, анимация для телефонов должна быть 200-300 мс, для планшетов - 400-450 (из-за размеров). Веб-анимации делаются ещё быстрее, в пределах 150-200 мс.
Полное руководство по использованию анимации в UX
Самый старый тип анимации, который сейчас считается устаревшим. Может встречаться в старых проектах или для несложных примеров.
Бывает двух видов:
Кроме собственных анимаций можно использовать встроенные ресурсы для анимаций:
@android:anim/slide_in_left
@android:anim/slide_out_right
android.R.anim.fade_in
android.R.anim.fade_out
Для создания реалистичных анимаций следует использовать класс Interpolator.
TranslateAnimation и <translate>
Метод overridePendingTransition() - анимации между активностями
LayoutAnimation - Анимация разметки и групп компонентов
Анимация переходов у ViewFlipper
Анимация ListView и ListActivity
Появился в Android 3.0. Нужно указать начальное и конечное значение, далее указать слушатель, в котором будут приходить промежуточные значения, и тогда будет возможность применить анимацию.
Общий пример для ValueAnimator
Падают, падают, падают листья (ValueAnimator)
ValueAnimator: Развернуть/свернуть панель
В Android 3.0 появился класс ObjectAnimator.
Позволяет создавать стандартные виды анимации (прозрачность, перемещение, масштабирование, цвет).
Статья об ObjectAnimator (другие примеры на Kotlin).
ObjectAnimator. Состояния анимации
ObjectAnimator. Анимация шариков
Появилась в Android 3.1 (API 12). Очень удобное использование - выбираете компонент и указываете цепочкой набор анимаций, которые выполняются параллельно или последовательно. Используется класс Animator.
Доступны анимации прозрачности, масштабирования, перемещения. Также можно установить длительность, задержку, интерполяторы.
Статья о ViewPropertyAnimator.
Эффект Ripple появился в Android 5.0 и был доступен из коробки. Достаточно подключить нужный системный атрибут.
?android:attr/selectableItemBackground
?android:attr/selectableItemBackgroundBorderless
Также можно задать собственные виды эффекта при помощи RippleDrawable.
Статья о RippleDrawable.
В Android 5.0 появился новый эффект появления, когда отображается или скрывается группа элементов интерфейса. Класс содержит всего один метод.
Класс ViewAnimationUtils и метод createCircularReveal().
В Android 5.0 Lollipop появилась поддержка векторных изображений и анимация с ними. Позже векторные изображения стали доступны и для старых устройств через библиотеку совместимости.
Читать статью о AnimatedVectorDrawable.
Дальнейшее развитие анимации векторных изображений - SeekableAnimatedVectorDrawable.
SpringAnimation, FlingAnimation
Переходы обеспечивают зрительные связи между различными состояниями путем движения элементов и преобразований между общими элементами. Можно выбрать настраиваемые анимации для начальных и конечных переходов, а также для переходов общих элементов между операциями.
Класс TransitionDrawable (третий курс)
TransitionManager (шестой курс)
Scene (шестой курс)
Превращения между экранами активностей (Android 5.0, API 21) (седьмой курс)
Переход общих элементов между экранами активностей (Android 5.0, API 21) (седьмой курс)
Всплывающая панель (второй курс)
Анимация с использованием Matrix (второй курс)
TimeAnimator (второй курс)
Анимация диалоговых окон (третий курс)
Управляй мечтой (третий курс)
Новые анимации активностей в Android 4.1 (Jelly Bean) (третий курс)
animateLayoutChanges - Анимация при изменении разметки (четвёртый курс)
Динамическое добавление компонентов через анимацию (четвёртый курс)
Анимация при вращении устройства (Android 4.3) (пятый курс)
Видео 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 - эффект складывающей гармошки. Исходник