🕐
animate*AsState を使ってComposeのアニメーションに最短で入門
Composeでアニメーションする方法はたくさんありますが、本記事では初心者に使いやすいanimate*AsState
を使って最短で入門することを目指します。
animate*AsState
以外も載ってます)
公式ドキュメント(
アニメーションしないコード
var flg by remember { mutableStateOf(true) }
val backColor = if (flg) Color.Red else Color.Blue
Column {
Box(
modifier = Modifier
.size(100.dp)
.background(backColor)
)
Button(onClick = {
flg = !flg
}) {
Text("change")
}
}
アニメーションするコード
var flg by remember { mutableStateOf(true) }
+ val backColor by animateColorAsState(if (flg) Color.Red else Color.Blue)
Column {
Box(
modifier = Modifier
.size(100.dp)
.background(backColor)
)
Button(onClick = {
flg = !flg
}) {
Text("change")
}
}
※ GIF画像にしたら少し分かりにくくなってしまいましたごめんなさい...
ポイント
animateColorAsState
でColorインスタンスを囲っただけです。色の場合はanimateColorAsState
,数値の場合はanimateIntAsState
,animateFloatAsState
など,Dpの場合はanimateDpAsState
を使うなどして簡単に値をアニメーション(値を少しずつ変化)させられます。
また各animate*AsState
は第2引数にtween(ミリ秒)
を指定することで簡単にアニメーションにかかる時間を指定できます。
tween()
val backColor by animateColorAsState(
if (flg) Color.Red else Color.Blue,
tween(3_000),
)
Discussion