Ответ
Да, работал. Использовал как стандартные средства (ViewPropertyAnimator, ObjectAnimator, ValueAnimator), так и более сложные подходы (Lottie, MotionLayout).
Пример простой анимации:
view.animate()
.alpha(0f)
.scaleX(0.5f)
.scaleY(0.5f)
.setDuration(300L)
.start()
MotionLayout удобен для сложных переходов между состояниями. Lottie применял для векторных анимаций из After Effects.
Нюансы:
- Учитывать производительность (избегать анимаций в
onDraw) - Останавливать анимации в
onPause/onStop - Использовать
Hardware Acceleratedдля плавности
Ответ 18+ 🔞
Ну вот, ёпта, сидишь такой на собеседовании, а тебе выкатывают: «А анимации делал?». Ну, бля, конечно делал, а как же! Не пальцем же, сука, деланные, в рот меня чих-пых.
Работал, да. Всё, что можно, перепробовал — от этих ваших стандартных штук, вроде ViewPropertyAnimator, до всяких замудрённых MotionLayout и Lottie. Последние — это вообще отдельная песня, когда дизайнер приносит какую-то пиздопроебибну из After Effects, а ты должен это впихнуть в приложение.
Вот, смотри, самый простой пример, чтобы не париться:
view.animate()
.alpha(0f)
.scaleX(0.5f)
.scaleY(0.5f)
.setDuration(300L)
.start()
Всё, бля, элементарно. Нажал — и видюшка растворяется и сжимается. Красота.
А вот MotionLayout — это уже для серьёзных пацанов. Когда у тебя там целая сцена, и нужно плавно перетекать из одного состояния в другое, с кучей связей и ограничений. Удобная штука, но иногда так настроишь, что сам от себя охуеваешь, глядя на XML.
Ну и Lottie — это вообще магия какая-то. Кинул JSON-файл, вызвал пару методов — и у тебя на экране уже какая-нибудь мартышлюшка пляшет. Но, бля, тоже не без подводных камней.
А теперь самое важное, ёбаный насос, нюансы, без которых всё накроется медным тазом:
- Производительность, сука! Это святое. Ни в коем случае не лезь с анимациями в
onDraw()— убьёшь FPS нахер. Все вычисления — заранее. - Убирай за собой! Как только активити уходит на паузу или останавливается — ВСЕ анимации должны быть остановлены. Иначе будут в фоне ресурсы жрать, а потом пользователь придёт и скажет, что приложение — говно.
- Жёсткое ускорение (
Hardware Accelerated) — твой лучший друг для плавности. Без него анимации будут дёргаться, как судороги, и доверия ебать ноль к такому софту.
Вот так-то, чувак. Анимация — это не просто кнопочку моргнуть, это целая наука, чтобы и красиво было, и не тормозило.