Метод animateTo
Метод animateTo класса
Animatable
это suspend функция, которая ведёт
value к targetValue
по animationSpec, например
tween.
Пока анимация идёт, value
обновляется каждый кадр и перекомпозиция
подхватывает offset или другой параметр.
Вызывают из
LaunchedEffect.
Синтаксис
animatable.animateTo(targetValue, animationSpec)
Параметры
| Параметр | Описание |
|---|---|
targetValue |
Значение, на котором анимация должна остановиться. |
animationSpec |
Спецификация хода, часто tween или spring.
|
Пример
Давайте анимируем смещение текста к 80 px:
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.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 x = remember { Animatable(0f) }
LaunchedEffect(Unit) {
x.animateTo(80f, tween(500))
}
Text(
text = "12345",
modifier = Modifier.offset {
IntOffset(x.value.roundToInt(), 0)
},
)
}
}
}
На экране строка "12345" плавно смещается
вправо после старта LaunchedEffect.
Смотрите также
-
метод
snapTo,
который ставит value без анимации -
метод
stop,
который прерывает animateTo -
функция
LaunchedEffect,
из которой вызывают animateTo -
функция
spring,
как animationSpec для animateTo