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

Функция animateColorAsState

Функция animateColorAsState меняет Color к targetValue с выбранной кривой. Результат подходит для background и color у Text. Спецификацию задают animationSpec, например tween.

Синтаксис

val bg by animateColorAsState(targetValue = targetColor)

Параметры

Параметр Описание
targetValue Цвет, к которому стремится анимация.
animationSpec Длительность и easing перехода между цветами.
label Метка для отладки анимации.

Пример

Давайте переключим цвет фона Surface:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.animation.animateColorAsState import androidx.compose.animation.core.tween import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.Button import androidx.compose.material3.Surface 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.graphics.Color class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var on by remember { mutableStateOf(false) } val bg by animateColorAsState( targetValue = if (on) Color.Red else Color.Green, animationSpec = tween(500), label = "abcde", ) Surface( modifier = Modifier.fillMaxSize(), color = bg, ) { Button(onClick = { on = !on }) { Text("12345") } } } } }

На экране фон плавно меняется между двумя оттенками при нажатии кнопки.

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

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