Метод stop
Метод stop класса
Animatable
завершает работу активного
animateTo
и оставляет value там, где анимация
остановилась на этом кадре.
Это обычная функция, не suspend,
её можно вызвать из onClick.
После stop можно снова вызвать animateTo
из LaunchedEffect.
Синтаксис
animatable.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 x = remember { Animatable(0f) }
LaunchedEffect(Unit) {
x.animateTo(200f, tween(2000))
}
Button(onClick = { x.stop() }) {
Text(
text = "12345",
modifier = Modifier.offset {
IntOffset(x.value.roundToInt(), 0)
},
)
}
}
}
}
На экране текст движется вправо, нажатие кнопки freeze положение через stop.
Смотрите также
-
метод
animateTo,
который stop прерывает -
метод
snapTo,
если нужно сразу прыгнуть к числу -
класс
Animatable,
состояние которого замораживает stop -
функция
tween,
длительность которой обрывает stop