Функция animateFloatAsState
Функция animateFloatAsState из Compose Animation
хранит текущее Float и каждый кадр
приближает его к параметру targetValue.
Ход задают через animationSpec,
например tween
или spring.
Целевое значение берут из состояния
mutableStateOf.
Синтаксис
val scale by animateFloatAsState(targetValue = target)
Параметры
| Параметр | Описание |
|---|---|
targetValue |
Число, к которому нужно прийти анимацией. |
animationSpec |
Спецификация длительности и кривой, часто tween или spring.
|
label |
Метка анимации для отладки в инструментах. |
Пример
Давайте анимируем масштаб текста по кнопке:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.tween
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
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.scale
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
var big by remember { mutableStateOf(false) }
val scale by animateFloatAsState(
targetValue = if (big) 1.5f else 1f,
animationSpec = tween(durationMillis = 300),
label = "abcde",
)
Button(onClick = { big = !big }) {
Text(
text = "12345",
modifier = Modifier.scale(scale),
)
}
}
}
}
На экране текст на кнопке плавно увеличивается и уменьшается при каждом нажатии.
Смотрите также
-
функция
animateDpAsState,
которая анимирует размер в dp -
функция
tween,
которая задаёт линейную анимацию по времени -
функция
spring,
которая задаёт пружинное движение -
класс
Animatable,
который управляет анимацией из корутины