11package benchmarks.animation
22
33import androidx.compose.animation.AnimatedVisibility
4+ import androidx.compose.animation.EnterExitState
5+ import androidx.compose.animation.core.Transition
46import androidx.compose.foundation.Image
57import androidx.compose.foundation.layout.Column
68import androidx.compose.foundation.layout.fillMaxWidth
@@ -11,11 +13,11 @@ import androidx.compose.runtime.getValue
1113import androidx.compose.runtime.mutableStateOf
1214import androidx.compose.runtime.remember
1315import androidx.compose.runtime.setValue
16+ import androidx.compose.runtime.withFrameNanos
1417import androidx.compose.ui.Alignment
1518import androidx.compose.ui.Modifier
1619import compose_benchmarks.benchmarks.generated.resources.Res
1720import compose_benchmarks.benchmarks.generated.resources.compose_multiplatform
18- import kotlinx.coroutines.delay
1921import org.jetbrains.compose.resources.ExperimentalResourceApi
2022import org.jetbrains.compose.resources.painterResource
2123
@@ -24,12 +26,17 @@ import org.jetbrains.compose.resources.painterResource
2426fun AnimatedVisibility () {
2527 MaterialTheme {
2628 var showImage by remember { mutableStateOf(false ) }
29+ var transition: Transition <EnterExitState >? = null
2730 LaunchedEffect (showImage) {
28- delay(200 )
31+ do {
32+ withFrameNanos {}
33+ } while (transition?.isRunning == true )
34+
2935 showImage = ! showImage
3036 }
3137 Column (Modifier .fillMaxWidth(), horizontalAlignment = Alignment .CenterHorizontally ) {
3238 AnimatedVisibility (showImage) {
39+ transition = this .transition
3340 Image (
3441 painterResource(Res .drawable.compose_multiplatform),
3542 null
0 commit comments