Skip to content

Commit bd1bd03

Browse files
committed
code review.
1 parent 170df26 commit bd1bd03

File tree

9 files changed

+48
-142
lines changed

9 files changed

+48
-142
lines changed

compose-loading/src/main/java/com/commandiron/compose_loading/ChasingDots.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ import kotlin.math.*
2121
@Composable
2222
fun ChasingDots(
2323
modifier: Modifier = Modifier,
24-
size: Dp = 30.dp,
2524
durationMillis: Int = 2000,
2625
delayBetweenDotsMillis: Int = 50,
26+
size: Dp = 30.dp,
2727
color: Color = MaterialTheme.colorScheme.surface,
2828
circleRatio: Float = 0.25f
2929
) {

compose-loading/src/main/java/com/commandiron/compose_loading/ChasingTwoDots.kt

Lines changed: 26 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.commandiron.compose_loading
22

33
import androidx.compose.animation.core.*
44
import androidx.compose.foundation.Canvas
5-
import androidx.compose.foundation.border
65
import androidx.compose.foundation.layout.Box
76
import androidx.compose.foundation.layout.size
87
import androidx.compose.material3.MaterialTheme
@@ -14,35 +13,51 @@ import androidx.compose.ui.geometry.Offset
1413
import androidx.compose.ui.graphics.Color
1514
import androidx.compose.ui.unit.DpSize
1615
import androidx.compose.ui.unit.dp
16+
import com.commandiron.compose_loading.transition.EaseInOut
17+
import com.commandiron.compose_loading.transition.fractionTransition
1718
import kotlin.math.cos
1819
import kotlin.math.sin
1920

2021
@Composable
2122
fun ChasingTwoDots(
2223
modifier: Modifier = Modifier,
23-
size: DpSize = DpSize(20.dp, 20.dp),
24+
durationMillis: Int = 2000,
25+
durationBetweenDotsMillis: Int = 400,
26+
size: DpSize = DpSize(30.dp, 30.dp),
2427
color: Color = MaterialTheme.colorScheme.surface,
25-
durationMillis: Int = 1800
2628
) {
2729
val transition = rememberInfiniteTransition()
2830

29-
val dotPathMultiplier1 = transition.chasingDotPathMultiplierTransition(
30-
durationMillis = durationMillis
31+
val dotPathMultiplier1 = transition.fractionTransition(
32+
initialValue = 0f,
33+
targetValue = 1f,
34+
fraction = 2,
35+
durationMillis = durationMillis,
36+
easing = LinearEasing
3137
)
32-
val dotPathMultiplier2 = transition.chasingDotPathMultiplierTransition2(
33-
durationMillis = durationMillis
38+
val dotPathMultiplier2 = transition.fractionTransition(
39+
initialValue = 0f,
40+
targetValue = 1f,
41+
fraction = 2,
42+
durationMillis = durationMillis,
43+
offsetMillis = durationBetweenDotsMillis,
44+
easing = LinearEasing
3445
)
3546

36-
val circleRadiusMultiplier1 = transition.chasingDotRadiusMultiplierTransition(
47+
val circleRadiusMultiplier1 = transition.fractionTransition(
3748
initialValue = 0f,
3849
targetValue = 1f,
39-
durationMillis = durationMillis / 2
50+
durationMillis = durationMillis / 2,
51+
repeatMode = RepeatMode.Reverse,
52+
easing = EaseInOut
4053
)
41-
val circleRadiusMultiplier2 = transition.chasingDotRadiusMultiplierTransition(
54+
val circleRadiusMultiplier2 = transition.fractionTransition(
4255
initialValue = 0f,
4356
targetValue = 1f,
4457
durationMillis = durationMillis / 2,
45-
offsetMillis = durationMillis / 2
58+
repeatMode = RepeatMode.Reverse,
59+
offsetMillis = durationMillis / 2,
60+
easing = EaseInOut
4661
)
4762

4863
Box(
@@ -75,71 +90,4 @@ fun ChasingTwoDots(
7590
)
7691
}
7792
}
78-
}
79-
80-
@Composable
81-
internal fun InfiniteTransition.chasingDotPathMultiplierTransition(
82-
durationMillis: Int,
83-
offsetMillis: Int = 0,
84-
easing: Easing = LinearEasing
85-
): State<Float> {
86-
return animateFloat(
87-
initialValue = 0f,
88-
targetValue = 1f,
89-
animationSpec = infiniteRepeatable(
90-
animation = keyframes {
91-
this.durationMillis = durationMillis
92-
0f at 0 with easing
93-
1f at durationMillis with easing
94-
},
95-
RepeatMode.Restart,
96-
StartOffset(offsetMillis)
97-
)
98-
)
99-
}
100-
101-
@Composable
102-
internal fun InfiniteTransition.chasingDotPathMultiplierTransition2(
103-
durationMillis: Int,
104-
offsetMillis: Int = 0,
105-
easing: Easing = LinearEasing
106-
): State<Float> {
107-
return animateFloat(
108-
initialValue = 0.5f,
109-
targetValue = 1f,
110-
animationSpec = infiniteRepeatable(
111-
animation = keyframes {
112-
this.durationMillis = durationMillis
113-
0.5f at 0 with easing
114-
1f at durationMillis / 2 with easing
115-
1.5f at durationMillis with easing
116-
},
117-
RepeatMode.Restart,
118-
StartOffset(offsetMillis)
119-
)
120-
)
121-
}
122-
123-
@Composable
124-
internal fun InfiniteTransition.chasingDotRadiusMultiplierTransition(
125-
initialValue: Float,
126-
targetValue: Float,
127-
durationMillis: Int,
128-
offsetMillis: Int = 0,
129-
easing: Easing = FastOutSlowInEasing
130-
): State<Float> {
131-
return animateFloat(
132-
initialValue = initialValue,
133-
targetValue = targetValue,
134-
animationSpec = infiniteRepeatable(
135-
animation = keyframes {
136-
this.durationMillis = durationMillis * 2
137-
initialValue at 0 with easing
138-
targetValue at durationMillis with easing
139-
initialValue at durationMillis * 2 with easing
140-
},
141-
RepeatMode.Restart,
142-
StartOffset(offsetMillis = offsetMillis)
143-
)
144-
)
14593
}

compose-loading/src/main/java/com/commandiron/compose_loading/DoubleBounce.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ import com.commandiron.compose_loading.transition.fractionTransition
1919
@Composable
2020
fun DoubleBounce(
2121
modifier: Modifier = Modifier,
22-
size: DpSize = DpSize(30.dp, 30.dp),
2322
durationMillis: Int = 2000,
2423
delayMillis: Int = 0,
24+
size: DpSize = DpSize(30.dp, 30.dp),
2525
color: Color = MaterialTheme.colorScheme.surface,
2626
shape: Shape = CircleShape
2727
) {

compose-loading/src/main/java/com/commandiron/compose_loading/Pulse.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,40 @@ import androidx.compose.ui.Alignment
1111
import androidx.compose.ui.Modifier
1212
import androidx.compose.ui.graphics.Color
1313
import androidx.compose.ui.graphics.Shape
14-
import androidx.compose.ui.unit.Dp
14+
import androidx.compose.ui.unit.DpSize
1515
import androidx.compose.ui.unit.dp
1616
import com.commandiron.compose_loading.transition.fractionTransition
1717

1818
@Composable
1919
fun Pulse(
2020
modifier: Modifier = Modifier,
21-
maxSize: Dp = 30.dp,
21+
durationMillis: Int = 1000,
22+
delayMillis: Int = 0,
23+
size: DpSize = DpSize(30.dp, 30.dp),
2224
color: Color = MaterialTheme.colorScheme.surface,
2325
shape: Shape = CircleShape,
24-
durationMillis: Int = 1000
2526
) {
2627
val transition = rememberInfiniteTransition()
2728

2829
val sizeMultiplier = transition.fractionTransition(
2930
initialValue = 0f,
3031
targetValue = 1f,
31-
durationMillis = durationMillis
32+
durationMillis = durationMillis,
33+
delayMillis = delayMillis
3234
)
3335
val alphaMultiplier = transition.fractionTransition(
3436
initialValue = 1f,
3537
targetValue = 0f,
36-
durationMillis = durationMillis
38+
durationMillis = durationMillis,
39+
delayMillis = delayMillis
3740
)
3841

3942
Box(
4043
modifier = modifier,
4144
contentAlignment = Alignment.Center
4245
){
4346
Surface(
44-
modifier = Modifier.size(maxSize * sizeMultiplier.value),
47+
modifier = Modifier.size(size * sizeMultiplier.value),
4548
shape = shape,
4649
color = color.copy(alpha = alphaMultiplier.value)
4750
) {}

compose-loading/src/main/java/com/commandiron/compose_loading/RotatingPlane.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ import com.commandiron.compose_loading.transition.fractionTransition
2121
@Composable
2222
fun RotatingPlane(
2323
modifier: Modifier = Modifier,
24-
size: DpSize = DpSize(30.dp, 30.dp),
2524
durationMillis: Int = 1200,
2625
delayMillis: Int = 0,
26+
size: DpSize = DpSize(30.dp, 30.dp),
2727
color: Color = MaterialTheme.colorScheme.surface,
2828
shape: Shape = Shapes.None,
2929
contentOnPlane: @Composable BoxScope. () -> Unit = {}

compose-loading/src/main/java/com/commandiron/compose_loading/ThreeBounce.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,18 @@ import androidx.compose.ui.Alignment
1111
import androidx.compose.ui.Modifier
1212
import androidx.compose.ui.graphics.Color
1313
import androidx.compose.ui.graphics.Shape
14-
import androidx.compose.ui.unit.Dp
14+
import androidx.compose.ui.unit.DpSize
1515
import androidx.compose.ui.unit.dp
1616
import com.commandiron.compose_loading.transition.fractionTransition
1717

1818
@Composable
1919
fun ThreeBounce(
2020
modifier: Modifier = Modifier,
21-
size: Dp = 30.dp,
21+
size: DpSize = DpSize(30.dp, 30.dp),
2222
color: Color = MaterialTheme.colorScheme.surface,
2323
shape: Shape = CircleShape,
2424
durationMillis: Int = 1400,
25-
delayBetweenDots: Int = 160
25+
delayBetweenDotsMillis: Int = 160
2626
) {
2727
val transition = rememberInfiniteTransition()
2828

@@ -38,15 +38,15 @@ fun ThreeBounce(
3838
targetValue = 1f,
3939
fraction = 1,
4040
durationMillis = durationMillis / 2,
41-
offsetMillis = delayBetweenDots,
41+
offsetMillis = delayBetweenDotsMillis,
4242
repeatMode = RepeatMode.Reverse
4343
)
4444
val sizeMultiplier3 = transition.fractionTransition(
4545
initialValue = 0f,
4646
targetValue = 1f,
4747
fraction = 1,
4848
durationMillis = durationMillis / 2,
49-
offsetMillis = delayBetweenDots * 2,
49+
offsetMillis = delayBetweenDotsMillis * 2,
5050
repeatMode = RepeatMode.Reverse
5151
)
5252

@@ -62,15 +62,15 @@ fun ThreeBounce(
6262
color = color
6363
) {}
6464
}
65-
Spacer(modifier = Modifier.width(size / 3 / 4))
65+
Spacer(modifier = Modifier.width(size.width / 3 / 4))
6666
Box(modifier = Modifier.size(size / 3), contentAlignment = Alignment.Center) {
6767
Surface(
6868
modifier = Modifier.size(size / 3 * sizeMultiplier2.value),
6969
shape = shape,
7070
color = color
7171
) {}
7272
}
73-
Spacer(modifier = Modifier.width(size / 3 / 4))
73+
Spacer(modifier = Modifier.width(size.width / 3 / 4))
7474
Box(modifier = Modifier.size(size / 3), contentAlignment = Alignment.Center) {
7575
Surface(
7676
modifier = Modifier.size(size / 3 * sizeMultiplier3.value),

compose-loading/src/main/java/com/commandiron/compose_loading/WanderingCubes.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ import com.commandiron.compose_loading.transition.EaseInOut
1919
@Composable
2020
fun WanderingCubes(
2121
modifier: Modifier = Modifier,
22-
size: DpSize = DpSize(30.dp, 30.dp),
2322
durationMillis: Int = 1800,
23+
size: DpSize = DpSize(30.dp, 30.dp),
2424
color: Color = MaterialTheme.colorScheme.surface,
2525
) {
2626
val transition = rememberInfiniteTransition()
@@ -41,15 +41,14 @@ fun WanderingCubes(
4141
val x2Multiplier = transition.wanderingCubesTransition(
4242
initialValue = 0f,
4343
targetValue = 1f,
44-
durationMillisPerFraction = durationPerFraction
44+
durationMillisPerFraction = durationPerFraction,
4545
)
4646
val y2Multiplier = transition.wanderingCubesTransition(
4747
initialValue = 0f,
4848
targetValue = 1f,
4949
durationMillisPerFraction = durationPerFraction,
5050
offsetMillis = durationPerFraction
5151
)
52-
5352
val rectHeightMultiplier = transition.wanderingCubesTransition(
5453
initialValue = 2f,
5554
targetValue = 1f,
@@ -71,7 +70,6 @@ fun WanderingCubes(
7170

7271
val rectWidth = width / 6
7372
val rectHeight = height / 6
74-
val defaultRectSize = Size(rectWidth, rectHeight)
7573

7674
val rectSize = Size(
7775
width = rectWidth * rectWidthMultiplier.value,

compose-loading/src/main/java/com/commandiron/compose_loading/Wave.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import com.commandiron.compose_loading.transition.fractionTransition
1818
@Composable
1919
fun Wave(
2020
modifier: Modifier = Modifier,
21-
size: Dp = 24.dp,
2221
durationMillis: Int = 1200,
2322
delayMillis: Int = 400,
23+
size: Dp = 24.dp,
2424
color: Color = MaterialTheme.colorScheme.surface,
2525
shape: Shape = Shapes.None,
2626
) {

compose-loading/src/main/java/com/commandiron/compose_loading/transition/Transition.kt

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -51,47 +51,4 @@ internal fun InfiniteTransition.fractionTransition(
5151
)
5252
}
5353

54-
@Composable
55-
internal fun InfiniteTransition.fractionTransitionToInitial(
56-
initialValue: Float,
57-
targetValue: Float,
58-
@IntRange(from = 2, to = 4) fraction: Int = 2,
59-
durationMillis: Int,
60-
delayMillis: Int = 0,
61-
offsetMillis: Int = 0,
62-
repeatMode: RepeatMode = RepeatMode.Restart,
63-
easing: Easing = FastOutSlowInEasing
64-
): State<Float> {
65-
return animateFloat(
66-
initialValue = initialValue,
67-
targetValue = targetValue,
68-
animationSpec = infiniteRepeatable(
69-
animation = keyframes {
70-
this.durationMillis = durationMillis
71-
this.delayMillis = delayMillis
72-
initialValue at 0 with easing
73-
when(fraction){
74-
2 ->{
75-
targetValue / fraction at durationMillis / fraction with easing
76-
initialValue at durationMillis with easing
77-
}
78-
3 ->{
79-
targetValue / fraction at durationMillis / fraction with easing
80-
targetValue / fraction * 2 at durationMillis / fraction * 2 with easing
81-
initialValue at durationMillis with easing
82-
}
83-
4 ->{
84-
targetValue / fraction at durationMillis / fraction with easing
85-
targetValue / fraction * 2 at durationMillis / fraction * 2 with easing
86-
targetValue / fraction * 3 at durationMillis / fraction * 3 with easing
87-
initialValue at durationMillis with easing
88-
}
89-
}
90-
},
91-
repeatMode,
92-
StartOffset(offsetMillis)
93-
)
94-
)
95-
}
96-
9754
val EaseInOut = CubicBezierEasing(0.42f, 0f, 0.58f, 1f)

0 commit comments

Comments
 (0)