Skip to content

Commit e0d63ac

Browse files
committed
added card with text.
1 parent f64e931 commit e0d63ac

4 files changed

Lines changed: 58 additions & 8 deletions

File tree

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import com.commandiron.animatable_compose.state.SharedAnimatableState
2020
@OptIn(ExperimentalMaterial3Api::class)
2121
@Composable
2222
fun AnimatableCard(
23-
onClick: () -> Unit,
2423
modifier: Modifier = Modifier,
24+
onClick: () -> Unit = {},
2525
enabled: Boolean = true,
2626
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
2727
border: BorderStroke? = null,
@@ -82,8 +82,8 @@ fun AnimatableCard(
8282
@OptIn(ExperimentalMaterial3Api::class)
8383
@Composable
8484
fun AnimatableCard(
85-
onClick: () -> Unit,
8685
modifier: Modifier = Modifier,
86+
onClick: () -> Unit = {},
8787
enabled: Boolean = true,
8888
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
8989
border: BorderStroke? = null,

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.commandiron.animatable_compose.state
22

3-
import androidx.compose.animation.core.AnimationSpec
4-
import androidx.compose.animation.core.animateFloatAsState
5-
import androidx.compose.animation.core.animateSizeAsState
6-
import androidx.compose.animation.core.tween
3+
import androidx.compose.animation.core.*
74
import androidx.compose.foundation.shape.CircleShape
85
import androidx.compose.foundation.shape.RoundedCornerShape
96
import androidx.compose.runtime.*

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-
Show6CardDealer()
24+
Show4AnimatableCardWithText()
2525
}
2626
}
2727
}
Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,61 @@
11
package com.commandiron.animatablecompose
22

3+
import androidx.compose.animation.core.Spring
4+
import androidx.compose.animation.core.spring
5+
import androidx.compose.foundation.clickable
6+
import androidx.compose.foundation.layout.Box
7+
import androidx.compose.foundation.layout.fillMaxSize
8+
import androidx.compose.foundation.layout.size
9+
import androidx.compose.foundation.shape.RoundedCornerShape
310
import androidx.compose.runtime.Composable
11+
import androidx.compose.ui.Alignment
12+
import androidx.compose.ui.Modifier
13+
import androidx.compose.ui.unit.DpSize
14+
import androidx.compose.ui.unit.dp
15+
import androidx.compose.ui.unit.sp
16+
import com.commandiron.animatable_compose.AnimatableCard
17+
import com.commandiron.animatable_compose.AnimatableText
18+
import com.commandiron.animatable_compose.state.rememberAnimatableCardState
19+
import com.commandiron.animatable_compose.state.rememberAnimatableTextState
20+
import com.commandiron.animatable_compose.state.rememberSharedAnimatableState
421

522
@Composable
623
fun Show4AnimatableCardWithText() {
7-
24+
val animatableCardState = rememberAnimatableCardState(
25+
initialSize = DpSize(width = 50.dp, height = 25.dp),
26+
targetSize = DpSize(width = 300.dp, height = 150.dp),
27+
toTargetSizeAnimationSpec = spring(Spring.DampingRatioHighBouncy, Spring.StiffnessVeryLow),
28+
initialShape = RoundedCornerShape(4.dp),
29+
targetShape = RoundedCornerShape(16.dp),
30+
toTargetShapeAnimationSpec = spring(Spring.DampingRatioHighBouncy, Spring.StiffnessVeryLow),
31+
)
32+
val animatableTextState = rememberAnimatableTextState(
33+
initialFontSize = 4.sp,
34+
targetFontSize = 36.sp,
35+
toTargetFontSizeAnimationSpec = spring(Spring.DampingRatioHighBouncy, Spring.StiffnessVeryLow)
36+
)
37+
val sharedAnimatableState = rememberSharedAnimatableState(
38+
listOf(
39+
animatableCardState,
40+
animatableTextState
41+
)
42+
)
43+
Box(
44+
modifier = Modifier
45+
.fillMaxSize()
46+
.clickable { sharedAnimatableState.animate() },
47+
contentAlignment = Alignment.Center
48+
) {
49+
AnimatableCard(
50+
modifier = Modifier.size(100.dp),
51+
state = sharedAnimatableState
52+
) {
53+
Box(Modifier.fillMaxSize(), Alignment.Center) {
54+
AnimatableText(
55+
text = "Animatable",
56+
state = sharedAnimatableState
57+
)
58+
}
59+
}
60+
}
861
}

0 commit comments

Comments
 (0)