Skip to content

Commit ebf1864

Browse files
committed
[BOOK-155] chore: CrossFadeNavDecorator 추가
navigation 애니메이션 통일성을 위함, 일단은 미적용
1 parent bf6ff85 commit ebf1864

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

app/src/main/kotlin/com/ninecraft/booket/di/CircuitModule.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ abstract class CircuitModule {
2828
): Circuit = Circuit.Builder()
2929
.addPresenterFactories(presenterFactories)
3030
.addUiFactories(uiFactories)
31+
// .setAnimatedNavDecoratorFactory(CrossFadeNavDecoratorFactory())
3132
.build()
3233
}
3334
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.ninecraft.booket.di
2+
3+
import androidx.compose.animation.AnimatedContentTransitionScope
4+
import androidx.compose.animation.ContentTransform
5+
import androidx.compose.animation.core.tween
6+
import androidx.compose.animation.fadeIn
7+
import androidx.compose.animation.fadeOut
8+
import androidx.compose.animation.togetherWith
9+
import com.slack.circuit.backstack.NavArgument
10+
import com.slack.circuit.foundation.NavigatorDefaults
11+
import com.slack.circuit.foundation.animation.AnimatedNavDecorator
12+
import com.slack.circuit.foundation.animation.AnimatedNavEvent
13+
import com.slack.circuit.foundation.animation.AnimatedNavState
14+
15+
data class CrossFadeNavDecoratorFactory(val durationMillis: Int = 300) :
16+
AnimatedNavDecorator.Factory {
17+
override fun <T : NavArgument> create(): AnimatedNavDecorator<T, *> =
18+
CrossFadeNavDecorator(durationMillis)
19+
}
20+
21+
class CrossFadeNavDecorator<T : NavArgument>(private val durationMillis: Int) :
22+
AnimatedNavDecorator<T, NavigatorDefaults.DefaultDecorator.DefaultAnimatedState<T>> by NavigatorDefaults.DefaultDecorator<T>() {
23+
24+
override fun AnimatedContentTransitionScope<AnimatedNavState>.transitionSpec(
25+
animatedNavEvent: AnimatedNavEvent,
26+
): ContentTransform {
27+
return fadeIn(tween(durationMillis)) togetherWith fadeOut(tween(durationMillis))
28+
}
29+
}

0 commit comments

Comments
 (0)