Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
454 of 502 menu
◀ ▶

Перечисление EnterExitState

Перечисление EnterExitState из Compose Animation фиксирует, на какой фазе перехода находится composable в AnimatedVisibility и похожих API. Значение можно читать в лямбдах transition и менять стиль по фазе. Отдельные уроки на каждое значение не нужны, все три перечислены в таблице ниже.

Синтаксис

EnterExitState.Visible

Значения

Значение Описание
PreEnter Элемент ещё не виден, идёт анимация входа.
Visible Элемент полностью показан и остаётся на экране.
PostExit Элемент скрывается, идёт анимация выхода.

После PostExit composable обычно убирают из дерева, если visible false.

Пример

Давайте переключим AnimatedVisibility и увидим фазы:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var visible by remember { mutableStateOf(true) } Button(onClick = { visible = !visible }) { Text("abcde") } AnimatedVisibility( visible = visible, enter = fadeIn(), exit = fadeOut(), ) { Text("12345") } } } }

На экране при скрытии текста "12345" сначала идёт фаза выхода, при показе - входа.

Смотрите также

  • функция AnimatedVisibility,
    которая использует фазы EnterExitState
  • функция AnimatedContent,
    которая анимирует смену targetState
  • функция tween,
    которой задают длительность enter и exit
  • функция spring,
    для упругого появления и исчезновения
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить