Функция spring
Функция spring создаёт SpringSpec
с физикой пружины.
Параметры dampingRatio и stiffness
задают затухание и жёсткость.
Подходит для живых переходов в UI,
когда нужен лёгкий overshoot.
Передают в animationSpec
у animateFloatAsState
и animateTo.
Синтаксис
spring(dampingRatio = 0.6f, stiffness = 300f)
Параметры
| Параметр | Описание |
|---|---|
dampingRatio |
Затухание колебаний, 1 без перелёта.
|
stiffness |
Жёсткость пружины, выше - быстрее отклик. |
visibilityThreshold |
Порог, когда анимация считается завершённой. |
Пример
Давайте пружиной изменим масштаб текста:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.spring
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 on by remember { mutableStateOf(false) }
val scale by animateFloatAsState(
targetValue = if (on) 1.2f else 1f,
animationSpec = spring(stiffness = 400f),
label = "12345",
)
Button(onClick = { on = !on }) {
Text(
text = "12345",
modifier = Modifier.scale(scale),
)
}
}
}
}
На экране текст слегка перелетает цель и затухает при смене масштаба.
Смотрите также
-
функция
tween,
которую выбирают для фиксированной длительности -
функция
animateFloatAsState,
которая использует spring в animationSpec -
метод
animateTo,
который анимирует значение с spring -
функция
AnimatedVisibility,
где spring часто задают для появления