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

Функция 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,
    который управляет анимацией из корутины
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить