Найти в Дзене
Android Dolgo.polo Dev

Animation — сколько нужно классов, чтобы красиво переместить вьюшку?

Глоссарий
• интерполятор — функция, описывающая изменение значения во времени
например, значение может изменяться линейно или по экспоненте
• pivotX, pivotY — координата точки внутри View, относительно которой будет применена анимация (например, вращение)
Как можно сделать анимацию
• ValueAnimator — задаем начальное и конечное значение числа, назначаем интерполятор, вешаем колбек, получаем значение каждые n миллисекунд, делаем с ним что хотим
• ObjectAnimator — то же самое, что и ValueAnimator, только сразу принимает название параметра View, который нужно менять
например, ObjectAnimator.ofFloat(view, "alpha", 1f, 0f)
• ViewPropertyAnimator — оптимизированный ObjectAnimator
имеет более удобный синтаксис, синхронизирует внутри себя анимации над одним и тем же параметром
• LayoutTransition — определяет анимацию появления/удаления элемента
например, есть дефолтная реализация для LinearLayout, включается параметром android:animateLayoutChanges="true"
• Scene — анимация меж

Глоссарий

• интерполятор — функция, описывающая изменение значения во времени

например, значение может изменяться линейно или по экспоненте

• pivotX, pivotY — координата точки внутри View, относительно которой будет применена анимация (например, вращение)



Как можно сделать анимацию

• ValueAnimator — задаем начальное и конечное значение числа, назначаем интерполятор, вешаем колбек, получаем значение каждые n миллисекунд, делаем с ним что хотим

• ObjectAnimator — то же самое, что и ValueAnimator, только сразу принимает название параметра View, который нужно менять

например, ObjectAnimator.ofFloat(view, "alpha", 1f, 0f)

• ViewPropertyAnimator — оптимизированный ObjectAnimator

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


• LayoutTransition — определяет анимацию появления/удаления элемента

например, есть дефолтная реализация для LinearLayout, включается параметром android:animateLayoutChanges="true"

• Scene — анимация между состояниями экрана

создается две xml — со стартовым и конечным положением вьюшек

• MotionLayout — наследник ConstraintLayout с API для анимации сложных перемещений вьюшек, с которыми взаимодействует пользователь

• WindowAnimation — анимашки перехода между Activity

• AnimationDrawable — описание анимации в drawable


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

• AnimatorSet — упрощает комбинацию анимашек

например, можно запустить анимации последовательно или параллельно с некоторой задержкой

• Fling Animation — придает "физичность" спискам

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

• Spring animation — придает "физичность" смахиваемым элементам

когда смахиваешь письмо в некоторых почтовых клиентах, оно немного пружинит, как будто отталкивается от соударения с краем экрана

• LottieAnimation — иногда дизайнерам легче скинуть готовый Lottie-файл с анимацией. нужна сторонняя библиотека

....

как дела с анимацией в Compose, все потребности уже закрыты?