Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 210новых вакансий за сутки·93 612вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 266
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 126
  • Облачные технологии14 083
  • QA вакансии3 456
  • Backend вакансии2 115
  • Инженер данных1 809
  • Продакт-менеджер1 261

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии986
  • AI вакансии950
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 537
  • Node.js2 026
  • .NET1 722
  • Kotlin1 611
  • Rust1 458
  • C#710
  • PHP682
  • C++571

DevOps и инфраструктура

  • Kubernetes7 772
  • DevOps вакансии6 054
  • Linux-инфраструктура5 493
  • Terraform / IaC4 275
  • CI/CD3 239
  • Мониторинг и Observability1 790
  • SRE568
  • Кибербезопасность458

Аналитика и данные

  • Data Scientist1 143
  • Бизнес-аналитик923
  • Аналитик данных857
  • Системный аналитик152

Другие направления

  • Проджект-менеджер620
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США44 276
  • Вакансии в Европе23 819
  • Вакансии в Канаде4 471
  • Работа в России3 904

По формату

  • Удалённые вакансии74 928
  • Релокация в США44 273
  • Гибридная работа12 388
  • Офисная работа7 083

По уровню

  • Senior вакансии42 625
  • Middle вакансии20 854
  • Junior вакансии6 721

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме Jetpack ComposeВсе вопросы
Jetpack ComposeJuniorТеория

Что такое AnimatedVisibility и как он работает?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

AnimatedVisibility анимирует появление и скрытие composable по булевому флагу visible. Дочерний контент удерживается в composition до конца exit-анимации. Поддерживает комбинирование fadeIn, slideIn, expandVertically и других transitions через оператор +.

Пример

@Composable
fun NotificationBanner(visible: Boolean, message: String) {
    AnimatedVisibility(
        visible = visible,
        enter = fadeIn(animationSpec = tween(300)) + slideInVertically(
            initialOffsetY = { -it }
        ),
        exit = fadeOut(animationSpec = tween(200)) + slideOutVertically(
            targetOffsetY = { -it }
        )
    ) {
        Surface(
            color = MaterialTheme.colorScheme.primaryContainer,
            modifier = Modifier.fillMaxWidth().padding(8.dp)
        ) {
            Text(
                text = message,
                modifier = Modifier.padding(16.dp)
            )
        }
    }
}

// Использование:
var showBanner by remember { mutableStateOf(false) }

Column {
    NotificationBanner(visible = showBanner, message = "Сохранено")
    Button(onClick = { showBanner = !showBanner }) {
        Text("Переключить")
    }
}

Что такое AnimatedVisibility

AnimatedVisibility — composable-обёртка, которая анимирует появление и скрытие дочернего контента на основе булевого параметра visible. В отличие от простого if (visible) { ... }, компонент удерживает дочерний composable в дереве composition до полного завершения exit-анимации, после чего удаляет его. Это гарантирует, что пользователь видит плавный переход, а не мгновенное исчезновение.

Как работает внутри

Compose отслеживает изменение visible. При переходе false → true запускается EnterTransition; при true → false — ExitTransition. Пока exit-анимация не завершена, content остаётся в composition в специальном состоянии ExitAnimationInProgress. Система transitions строится на Transition<Boolean> под капотом, что позволяет комбинировать несколько эффектов через +.

Стандартные варианты transitions:

  • fadeIn() + slideInVertically() — плавное появление со сдвигом
  • expandVertically() / shrinkVertically() — раскрытие/схлопывание по высоте
  • scaleIn() / scaleOut() — масштабирование

AnimatedContent vs AnimatedVisibility

Если нужно анимировать смену содержимого (например, переключение между двумя виджетами), используют AnimatedContent. AnimatedVisibility работает только с одним булевым условием показа/скрытия.

Подводные камни

  • Cleanup в exit-фазе. Если дочерний composable освобождает ресурсы в DisposableEffect, cleanup произойдёт только после завершения exit-анимации, а не в момент visible = false. Это важно при работе с камерой, медиаплеером или сетевыми соединениями.
  • Состояние внутри content. remember-состояние внутри AnimatedVisibility сохраняется, пока идёт exit-анимация. После удаления из composition состояние сбрасывается — не полагайтесь на него после скрытия.
  • Вложенная AnimatedVisibility. Дочерние composable могут использовать animateEnterExit() modifier для независимой анимации внутри родительского перехода, но легко запутаться в порядке запуска.
  • Производительность сложных transitions. Комбинирование 3+ transitions одновременно увеличивает нагрузку на rendering. Профилируйте через Android Studio GPU Profiler.
  • Доступность. AnimatedVisibility не добавляет автоматически semantics-аннотации для screen reader. Скрытый контент с visible = false недоступен, но в момент анимации — доступен. Явно управляйте Modifier.semantics { invisibleToUser() } при необходимости.
  • Лайаут до появления. До первого показа composable не занимает место в лайауте, но после первого скрытия (exit-анимация) он ещё занимает место. Это может вызывать скачки лайаута, если родитель адаптирует размер.
  • key и идентичность. При использовании внутри LazyColumn каждая строка с AnimatedVisibility должна иметь стабильный key, иначе Compose может переиспользовать composable и пропустить анимацию.
  • Нет out-of-the-box spring для visibility. По умолчанию используется tween. Для spring-анимации нужно явно передать spring() в animationSpec каждого перехода.

Частые вопросы на собеседовании

  • Что такое State в Jetpack Compose и как работает state hoisting?
  • Что такое recomposition и что её вызывает в Jetpack Compose?
  • В чём разница между remember и rememberSaveable?
  • Каковы лучшие практики производительности в Jetpack Compose (стабильность, пропускаемость)?

Типичные ошибки

  • Объяснять «AnimatedVisibility» только как синтаксис и не описывать поведение runtime/compiler.
  • Игнорировать важный риск: Если хранить resource cleanup только в исчезающем child без учета exit, можно получить неожиданный момент освобождения.
  • Давать пример без edge case: отмены, null, recomposition, platform boundary или ошибки.

Что проверяет интервьюер

  • Формулирует суть темы «AnimatedVisibility» своими словами и связывает ее с кодом.
  • Называет механизм: Он удерживает content в composition до завершения exit animation и позволяет комбинировать enter/exit transitions.
  • Видит production-последствие: Если хранить resource cleanup только в исчезающем child без учета exit, можно получить неожиданный момент освобождения.

Как вы знаете этот вопрос?

Проверить себя по теме Jetpack Compose →

Источники

  • https://developer.android.com/develop/ui/compose/animation/composables-modifiers

Связанные темы

Jetpack Composeanimated-visibility-reasoningui-state