Skip to content

Commit 7ad2709

Browse files
committed
improvements.
1 parent d494633 commit 7ad2709

8 files changed

Lines changed: 105 additions & 12 deletions

File tree

animatable-compose/src/main/java/com/commandiron/animatable_compose/state/AnimatableState.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ data class SharedAnimatableState(
5050
@Composable
5151
fun rememberAnimatableTextState(
5252
index: Int = 0,
53-
initialFontSize: TextUnit,
54-
targetFontSize: TextUnit,
53+
initialFontSize: TextUnit? = null,
54+
targetFontSize: TextUnit? = null,
5555
toTargetFontSizeAnimationSpec: AnimationSpec<Float> = tween(500),
5656
toInitialFontSizeAnimationSpec: AnimationSpec<Float> = tween(500),
5757
onFontSizeAnimation: (AnimationState) -> Unit = {},
@@ -632,11 +632,11 @@ data class AnimatableState(
632632
if(initialOffset.x == Dp.Infinity
633633
|| initialOffset.x == - Dp.Infinity
634634
|| initialOffset.y == Dp.Infinity
635-
|| initialOffset.x == - Dp.Infinity
635+
|| initialOffset.y == - Dp.Infinity
636636
|| targetOffset.x == Dp.Infinity
637637
|| targetOffset.x == - Dp.Infinity
638638
|| targetOffset.y == Dp.Infinity
639-
|| targetOffset.x == - Dp.Infinity
639+
|| targetOffset.y == - Dp.Infinity
640640
){
641641
throw IllegalArgumentException(
642642
"Please specify size in state for use Dp.Infinity in offset animation"

app/src/main/java/com/commandiron/animatablecompose/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class MainActivity : ComponentActivity() {
2121
color = MaterialTheme.colorScheme.background
2222
) {}
2323
Box(Modifier.fillMaxSize(), Alignment.Center) {
24-
Show4()
24+
Show1AnimatableText()
2525
}
2626
}
2727
}

app/src/main/java/com/commandiron/animatablecompose/Show1.kt renamed to app/src/main/java/com/commandiron/animatablecompose/Show1AnimatableText.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import com.commandiron.animatable_compose.AnimatableText
1212
import com.commandiron.animatable_compose.state.rememberAnimatableTextState
1313

1414
@Composable
15-
fun Show1() {
15+
fun Show1AnimatableText() {
1616
// Simply create state and pass it to AnimatableText
1717
val state = rememberAnimatableTextState(
1818
initialFontSize = 12.sp,

app/src/main/java/com/commandiron/animatablecompose/Show2.kt renamed to app/src/main/java/com/commandiron/animatablecompose/Show2AnimatableBox.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import androidx.compose.material.icons.Icons
77
import androidx.compose.material.icons.filled.Add
88
import androidx.compose.material3.Icon
99
import androidx.compose.runtime.Composable
10-
import androidx.compose.ui.Alignment
1110
import androidx.compose.ui.Modifier
1211
import androidx.compose.ui.graphics.Color
1312
import androidx.compose.ui.unit.Dp
@@ -18,7 +17,7 @@ import com.commandiron.animatable_compose.AnimatableBox
1817
import com.commandiron.animatable_compose.state.rememberAnimatableBoxState
1918

2019
@Composable
21-
fun Show2() {
20+
fun Show2AnimatableBox() {
2221
val state = rememberAnimatableBoxState(
2322
initialSize = DpSize(60.dp, 60.dp), // set initial size
2423
targetSize = DpSize(Dp.Infinity, 120.dp), // set target size

app/src/main/java/com/commandiron/animatablecompose/Show3.kt renamed to app/src/main/java/com/commandiron/animatablecompose/Show3AnimatableCard.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import com.commandiron.animatable_compose.AnimatableCard
1717
import com.commandiron.animatable_compose.state.rememberAnimatableCardState
1818

1919
@Composable
20-
fun Show3() {
20+
fun Show3AnimatableCard() {
2121
val animatableCardState = rememberAnimatableCardState(
2222
initialSize = DpSize(width = 70.dp, height = 70.dp),
2323
targetSize = DpSize(width = 200.dp, height = 70.dp),
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.commandiron.animatablecompose
2+
3+
import androidx.compose.runtime.Composable
4+
5+
@Composable
6+
fun Show4AnimatableCardWithText() {
7+
8+
}

app/src/main/java/com/commandiron/animatablecompose/Show4.kt renamed to app/src/main/java/com/commandiron/animatablecompose/Show5ExpandablePhoneNumber.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import com.commandiron.animatable_compose.state.rememberAnimatableTextState
2222
import com.commandiron.animatable_compose.state.rememberSharedAnimatableState
2323

2424
@Composable
25-
fun Show4() {
25+
fun Show5ExpandablePhoneNumber() {
2626
//Create components state
2727
val animatableCardState = rememberAnimatableCardState(
2828
initialSize = DpSize(80.dp, 80.dp),
@@ -39,8 +39,6 @@ fun Show4() {
3939
initialSize = DpSize(40.dp, 40.dp),
4040
targetSize = DpSize(80.dp, 80.dp),
4141
toTargetSizeAnimationSpec = tween(500,500),
42-
initialAlpha = 0.3f,
43-
targetAlpha = 1f,
4442
toTargetAlphaAnimationSpec = tween(5000, 500),
4543
initialOffset = DpOffset(0.dp, 0.dp),
4644
targetOffset = DpOffset((-50).dp, 0.dp),
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package com.commandiron.animatablecompose
2+
3+
import androidx.compose.animation.core.tween
4+
import androidx.compose.foundation.clickable
5+
import androidx.compose.foundation.layout.Box
6+
import androidx.compose.foundation.layout.fillMaxSize
7+
import androidx.compose.foundation.shape.RoundedCornerShape
8+
import androidx.compose.runtime.*
9+
import androidx.compose.ui.Alignment
10+
import androidx.compose.ui.Modifier
11+
import androidx.compose.ui.unit.*
12+
import com.commandiron.animatable_compose.AnimatableCard
13+
import com.commandiron.animatable_compose.AnimatableText
14+
import com.commandiron.animatable_compose.state.AnimatableState
15+
import com.commandiron.animatable_compose.state.rememberAnimatableCardState
16+
import com.commandiron.animatable_compose.state.rememberAnimatableTextState
17+
import com.commandiron.animatable_compose.state.rememberSharedAnimatableState
18+
19+
@Composable
20+
fun Show6CardDealer() {
21+
22+
val cards by remember {
23+
mutableStateOf(listOf("A","K","Q","J","10","9","8","7","6","5","4","3","2"))
24+
}
25+
var deck by remember {
26+
mutableStateOf(cards + cards + cards + cards)
27+
}
28+
29+
val animatableCardState = rememberAnimatableCardState(
30+
initialSize = DpSize(64.dp, 64.dp),
31+
targetSize = DpSize(64.dp, 64.dp),
32+
initialOffset = DpOffset(0.dp, 120.dp),
33+
targetOffset = DpOffset(-Dp.Infinity, -Dp.Infinity)
34+
)
35+
val animatableTextState = rememberAnimatableTextState(
36+
initialFontSize = 0.sp,
37+
targetFontSize = 24.sp
38+
)
39+
40+
val cardStates = mutableListOf<AnimatableState>()
41+
val textStates = mutableListOf<AnimatableState>()
42+
43+
deck.indices.forEach {
44+
cardStates.add(
45+
animatableCardState.copy(
46+
index = it,
47+
toTargetOffsetAnimationSpec = tween(400, (it * 400)),
48+
targetOffset = DpOffset(if(it % 2 == 0) (-100).dp else 100.dp, (-150).dp)
49+
)
50+
)
51+
textStates.add(
52+
animatableTextState.copy(
53+
index = it,
54+
toTargetFontSizeAnimationSpec = tween(400, (it * 400))
55+
)
56+
)
57+
58+
}
59+
60+
val sharedAnimatableState = rememberSharedAnimatableState(cardStates + textStates)
61+
62+
Box(
63+
modifier = Modifier
64+
.fillMaxSize()
65+
.clickable {
66+
deck = deck.shuffled()
67+
sharedAnimatableState.animate()
68+
},
69+
contentAlignment = Alignment.Center
70+
) {
71+
deck.indices.forEach {
72+
AnimatableCard(
73+
onClick = {},
74+
state = sharedAnimatableState,
75+
stateIndex = it,
76+
fixedShape = RoundedCornerShape(16.dp)
77+
) {
78+
Box(Modifier.fillMaxSize(), Alignment.Center) {
79+
AnimatableText(
80+
text = deck[it],
81+
state = sharedAnimatableState,
82+
stateIndex = it
83+
)
84+
}
85+
}
86+
}
87+
}
88+
}

0 commit comments

Comments
 (0)