В каких коллбэках жизненного цикла Activity будешь работать с анимацией

Ответ

Лучше всего работать с анимацией в onStart() или onResume(), так как в этот момент активити уже видима пользователю. Избегайте onCreate() - view может быть не полностью инициализирована. Для остановки анимации используйте onPause().

Пример:

override fun onResume() {
    super.onResume()
    view.animate()
        .alpha(1f)
        .setDuration(300)
        .start()
}

override fun onPause() {
    view.animate().cancel()
    super.onPause()
}

Ответ 18+ 🔞

Ёпта, слушай сюда, дружище. Тут такая тема — с анимацией работать надо с умом, а не как попало. Многие, блядь, лепят её прям в onCreate(), а потом удивляются, почему у них всё ебётся и не работает. Это же, ёпта, как пытаться завести машину, когда бензин ещё не залил — нихуя не поедет, только искры лететь будут.

Лучше всего, блядь, стартовать анимацию в onStart() или onResume(). Почему? Да потому что в этот момент активити уже, сука, видна пользователю, все вьюхи проинициализированы и готовы к работе. Это как приходишь на кухню — всё уже на плите стоит, только газ поджечь. А в onCreate() — это ты ещё в магазин за продуктами только собрался, нихуя не готово.

А чтобы не тратить ресурсы зря, когда пользователь ушёл с экрана, анимацию надо останавливать. Для этого — наш верный друг onPause(). Поставил на паузу — и всё, ни одного лишнего кадра не проёбываешь. Экономия, блядь, батареи и процессора — святое дело.

Вот смотри, как это выглядит в коде, тут всё просто, как три копейки:

override fun onResume() {
    super.onResume()
    view.animate()
        .alpha(1f)
        .setDuration(300)
        .start()
}

override fun onPause() {
    view.animate().cancel()
    super.onPause()
}

Видишь? В onResume() — запустил анимацию на полную катушку. В onPause() — хуяк, и отменил всё к чертям собачьим. Красота, да и только. Главное — не перепутай порядок вызовов super, а то будет тебе хиросима, а не анимация. Запомнил? То-то же.