Метод snapTo
Метод snapTo класса
Animatable
мгновенно записывает targetValue
в value, не запуская tween.
Это suspend функция, её вызывают
из LaunchedEffect
или корутины.
Удобно после жеста или перед новым
animateTo.
Синтаксис
animatable.snapTo(targetValue)
Параметры
| Параметр | Описание |
|---|---|
targetValue |
Новое значение без промежуточных кадров. |
Пример
Давайте сбросим offset по нажатию кнопки:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.animation.core.Animatable
import androidx.compose.foundation.layout.offset
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.IntOffset
import kotlinx.coroutines.launch
import kotlin.math.roundToInt
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val x = remember { Animatable(50f) }
val scope = rememberCoroutineScope()
Button(onClick = {
scope.launch { x.snapTo(0f) }
}) {
Text(
text = "abcde",
modifier = Modifier.offset {
IntOffset(x.value.roundToInt(), 0)
},
)
}
}
}
}
На экране текст прыгает к началу без анимации после snapTo в корутине.
Смотрите также
-
метод
animateTo,
который ведёт value плавно -
метод
stop,
который останавливает текущую анимацию -
класс
Animatable,
которому принадлежит snapTo -
функция
animateFloatAsState,
если нужен автоматический переход без snapTo