@@ -15,8 +15,6 @@ import androidx.compose.ui.graphics.Color
1515import androidx.compose.ui.unit.DpSize
1616import androidx.compose.ui.unit.dp
1717import com.commandiron.compose_loading.transition.EaseInOut
18- import com.commandiron.compose_loading.transition.fractionTransition
19- import com.commandiron.compose_loading.transition.fractionTransitionDelayAtFirst
2018
2119@Composable
2220fun WanderingCubes (
@@ -29,56 +27,38 @@ fun WanderingCubes(
2927
3028 val durationPerFraction = durationMillis / 4
3129
32- val x1Multiplier = transition.fractionTransition(
33- initialValue = 0f ,
34- targetValue = 1f ,
35- durationMillis = durationPerFraction,
36- delayMillis = durationMillis / 8 ,
37- repeatMode = RepeatMode .Reverse ,
38- easing = EaseInOut
39- )
40- val y1Multiplier = transition.fractionTransition(
41- initialValue = 0f ,
42- targetValue = 1f ,
43- durationMillis = durationPerFraction,
44- delayMillis = durationMillis / 8 ,
45- offsetMillis = durationPerFraction,
46- repeatMode = RepeatMode .Reverse ,
47- easing = EaseInOut
48- )
49- val x2Multiplier = transition.fractionTransition(
30+ val x1Multiplier = transition.wanderingCubesTransition(
5031 initialValue = 1f ,
5132 targetValue = 0f ,
52- durationMillis = durationPerFraction,
53- delayMillis = durationMillis / 8 ,
54- repeatMode = RepeatMode .Reverse ,
55- easing = EaseInOut
33+ durationMillisPerFraction = durationPerFraction
5634 )
57- val y2Multiplier = transition.fractionTransition (
35+ val y1Multiplier = transition.wanderingCubesTransition (
5836 initialValue = 1f ,
5937 targetValue = 0f ,
60- durationMillis = durationPerFraction,
61- delayMillis = durationMillis / 8 ,
62- offsetMillis = durationPerFraction,
63- repeatMode = RepeatMode .Reverse ,
64- easing = EaseInOut
38+ durationMillisPerFraction = durationPerFraction,
39+ offsetMillis = durationPerFraction
40+ )
41+ val x2Multiplier = transition.wanderingCubesTransition(
42+ initialValue = 0f ,
43+ targetValue = 1f ,
44+ durationMillisPerFraction = durationPerFraction
45+ )
46+ val y2Multiplier = transition.wanderingCubesTransition(
47+ initialValue = 0f ,
48+ targetValue = 1f ,
49+ durationMillisPerFraction = durationPerFraction,
50+ offsetMillis = durationPerFraction
6551 )
6652
67- val rectHeightMultiplier = transition.fractionTransitionDelayAtFirst(
68- initialValue = 1f ,
69- targetValue = 2f ,
70- durationMillis = durationPerFraction,
71- delayMillis = durationPerFraction / 2 ,
72- repeatMode = RepeatMode .Reverse ,
73- easing = LinearEasing
53+ val rectHeightMultiplier = transition.wanderingCubesTransition(
54+ initialValue = 2f ,
55+ targetValue = 1f ,
56+ durationMillisPerFraction = durationPerFraction / 2
7457 )
75- val rectWidthMultiplier = transition.fractionTransitionDelayAtFirst(
76- initialValue = 1f ,
77- targetValue = 2f ,
78- durationMillis = durationPerFraction,
79- delayMillis = durationPerFraction / 2 ,
80- repeatMode = RepeatMode .Reverse ,
81- easing = LinearEasing
58+ val rectWidthMultiplier = transition.wanderingCubesTransition(
59+ initialValue = 2f ,
60+ targetValue = 1f ,
61+ durationMillisPerFraction = durationPerFraction / 2
8262 )
8363
8464 Box (
@@ -91,6 +71,8 @@ fun WanderingCubes(
9171
9272 val rectWidth = width / 6
9373 val rectHeight = height / 6
74+ val defaultRectSize = Size (rectWidth, rectHeight)
75+
9476 val rectSize = Size (
9577 width = rectWidth * rectWidthMultiplier.value,
9678 height = rectHeight * rectHeightMultiplier.value
@@ -111,20 +93,20 @@ fun WanderingCubes(
11193 val y2 = y2Multiplier.value * effectiveHeight
11294 drawRect(
11395 color = color,
114- size = Size (rectWidth, rectHeight) ,
96+ size = rectSize ,
11597 topLeft = Offset (x2,y2)
11698 )
11799 }
118100 }
119101}
120102
121103@Composable
122- internal fun InfiniteTransition.offsetMultiplierTransition (
104+ internal fun InfiniteTransition.wanderingCubesTransition (
123105 initialValue : Float ,
124106 targetValue : Float ,
125107 durationMillisPerFraction : Int ,
126108 offsetMillis : Int = 0,
127- easing : Easing = FastOutSlowInEasing
109+ easing : Easing = EaseInOut
128110): State <Float > {
129111 return animateFloat(
130112 initialValue = initialValue,
@@ -142,30 +124,4 @@ internal fun InfiniteTransition.offsetMultiplierTransition(
142124 StartOffset (offsetMillis)
143125 )
144126 )
145- }
146-
147- @Composable
148- internal fun InfiniteTransition.sizeMultiplierTransition (
149- initialValue : Float ,
150- targetValue : Float ,
151- durationMillisPerFraction : Int ,
152- offsetMillis : Int = 0,
153- easing : Easing = FastOutSlowInEasing
154- ): State <Float > {
155- return animateFloat(
156- initialValue = initialValue,
157- targetValue = targetValue,
158- animationSpec = infiniteRepeatable(
159- animation = keyframes {
160- this .durationMillis = durationMillisPerFraction * 4
161- initialValue at 0 with easing
162- targetValue at durationMillisPerFraction with easing
163- initialValue at durationMillisPerFraction * 2 with easing
164- targetValue at durationMillisPerFraction * 3 with easing
165- initialValue at durationMillisPerFraction * 4 with easing
166- },
167- RepeatMode .Restart ,
168- StartOffset (offsetMillis)
169- )
170- )
171127}
0 commit comments