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

Функция tween

Функция tween из androidx.compose.animation.core создаёт TweenSpec для перехода от начального значения к целевому за время. Её передают в animationSpec у animateFloatAsState и других animate*AsState. Длительность задают durationMillis, кривую - easing.

Синтаксис

tween(durationMillis = 300)

Параметры

Параметр Описание
durationMillis Длина анимации в миллисекундах.
delayMillis Пауза перед стартом анимации.
easing Кривая скорости, например FastOutSlowInEasing.

Пример

Давайте растянем поворот текста на 600 мс:

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.rotate class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var on by remember { mutableStateOf(false) } val angle by animateFloatAsState( targetValue = if (on) 45f else 0f, animationSpec = tween(durationMillis = 600), label = "abcde", ) Button(onClick = { on = !on }) { Text( text = "abcde", modifier = Modifier.rotate(angle), ) } } } }

На экране надпись на кнопке за полсекунды поворачивается и возвращается обратно.

Смотрите также

  • функция spring,
    альтернатива tween с пружинной физикой
  • функция animateFloatAsState,
    к которой часто подставляют tween
  • функция animateDpAsState,
    которая принимает tween в animationSpec
  • метод animateTo,
    которому тоже передают tween
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить