0
0

More than 1 year has passed since last update.

AndroidのJetpack Composeアニメーションを触ってみる(AnimatedVisibility)その2

Posted at

前回同様Jetpack Composeアニメーション使用して動かしてみようと思います。

今回は高レベル アニメーション API の AnimatedVisibilityについてやっていこうと思います。

前回

前回はアニメーションさせる方法で終わりました。今回はEnterTransition と ExitTransitionを設定をしてみようと思います。

fadeIn fadeOut slideIn slideOut を今回は実装していきます。

表示非表示のアニメーションカスタム

詳しいコードは前回を見てください。
※今回はAnimatedVisibilityからしか記載しません。

fadeIn fadeOut
こちらは透明からだんだんと見えるようになり、だんだん透明になって消えていく方法です。
追加で秒数指定をしております。1000ミリ表でアニメーションをするようになっております。

透明アニメション.gif

AnimatedVisibilityView.kt
AnimatedVisibility(
    isExtended,
    enter = fadeIn(
        animationSpec = tween(durationMillis = 1000)
    ),
    exit = fadeOut(
        animationSpec = tween(durationMillis = 1000)
    )
) {
    Text(
        text = name,
        Modifier
            .padding(start = 8.dp, end = 12.dp)
            .background(Color.Red)
    )
}

slideIn slideOut
こちらは横から見えるように動きます。横へ動いて消えていく方法です。
追加で秒数指定とアニメーションの速度を指定してますtween(1000, easing = LinearOutSlowInEasing)をしております。1000ミリ表でアニメーションをするようになっております。
IntOffset(fullSize.width, fullSize.height)はズラす位置です。今回はTextの大きさ分右下にズレてます。

横ズラしアニメーション.gif

AnimatedVisibilityView.kt
AnimatedVisibility(
    isExtended,
    enter = slideIn(tween(1000, easing = LinearOutSlowInEasing)) { fullSize ->
        IntOffset(fullSize.width, fullSize.height)
    },
    exit = slideOut(tween(1000, easing = LinearOutSlowInEasing)) { fullSize ->
        IntOffset(fullSize.width, fullSize.height)
    },
) {
    Text(
        text = name,
        Modifier
            .background(Color.Red)
    )
}

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0