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

Класс Animatable

Класс Animatable из Compose Animation оборачивает тип T с AnimationVector, например Animatable(0f) для Float. Методы animateTo и snapTo помечены suspend, их вызывают из LaunchedEffect или другой корутины. stop останавливает текущую анимацию без suspend.

Синтаксис

val offset = remember { Animatable(0f) }

Методы

Метод Описание
animateTo Suspend анимация к target с animationSpec.
snapTo Suspend мгновенная установка value без анимации.
stop Прерывает текущую анимацию на месте.

Пример

Давайте сдвинем текст через animateTo:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.tween import androidx.compose.foundation.layout.offset import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.unit.IntOffset import kotlin.math.roundToInt class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val offset = remember { Animatable(0f) } LaunchedEffect(Unit) { offset.animateTo(100f, tween(800)) } Button(onClick = { offset.stop() }) { Text( text = "abcde", modifier = Modifier.offset { IntOffset(offset.value.roundToInt(), 0) }, ) } } } }

На экране текст на кнопке за восемь сотен миллисекунд съезжает вправо, stop прерывает движение.

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

  • метод animateTo,
    который плавно ведёт value к цели
  • функция LaunchedEffect,
    откуда вызывают suspend методы Animatable
  • функция animateFloatAsState,
    упрощённый вариант для Float в composable
  • функция tween,
    которую передают в animateTo
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить