diff --git a/app/src/main/java/dev/baseio/composeplayground/MainActivity.kt b/app/src/main/java/dev/baseio/composeplayground/MainActivity.kt index 1103c5d..4c43840 100644 --- a/app/src/main/java/dev/baseio/composeplayground/MainActivity.kt +++ b/app/src/main/java/dev/baseio/composeplayground/MainActivity.kt @@ -8,12 +8,18 @@ import android.view.Window import android.view.WindowManager import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import androidx.compose.foundation.border import androidx.compose.foundation.layout.* +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.Divider import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface +import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat @@ -28,9 +34,14 @@ import dev.baseio.composeplayground.ui.animations.anmolverma.GramophoneDisc import dev.baseio.composeplayground.ui.animations.anmolverma.ShootingStarsAnimation import dev.baseio.composeplayground.ui.animations.anmolverma.SlackAnimation import dev.baseio.composeplayground.ui.animations.anmolverma.googleio2022.GoogleIO +import dev.baseio.composeplayground.ui.animations.anmolverma.loadingindicators.LoadingAnimation +import dev.baseio.composeplayground.ui.animations.anmolverma.loadingindicators.LoadingIndicator +import dev.baseio.composeplayground.ui.animations.anmolverma.loadingindicators.Size +import dev.baseio.composeplayground.ui.animations.anmolverma.loadingindicators.Speed import dev.baseio.composeplayground.ui.animations.anmolverma.planetarysystem.PlanetarySystem import dev.baseio.composeplayground.ui.animations.anmolverma.pulltorefresh.PullToRefreshOne import dev.baseio.composeplayground.ui.theme.ComposePlaygroundTheme +import dev.baseio.composeplayground.ui.theme.Typography class MainActivity : ComponentActivity() { @OptIn(ExperimentalPagerApi::class) @@ -72,7 +83,7 @@ class MainActivity : ComponentActivity() { ) { HorizontalPager( modifier = Modifier.fillMaxSize(), - count = 18, state = pagerState, + count = 19, state = pagerState, ) { page -> // Our page content when (page) { @@ -133,7 +144,7 @@ class MainActivity : ComponentActivity() { SlackAnimation() } 2 -> { - GramophoneDisc() +// GramophoneDisc() } 14 -> { Box(Modifier.fillMaxSize()) { @@ -150,6 +161,36 @@ class MainActivity : ComponentActivity() { BellAnimation(Modifier.align(Alignment.Center)) } } + 18 -> { + Column( + Modifier + .verticalScroll(rememberScrollState()) + .padding(24.dp)){ + LoadingAnimation.values().forEach { loadingAnim-> + Column( + Modifier) { + Column { + Text(text = "Sizes", style = Typography.subtitle1.copy(fontWeight = FontWeight.Bold)) + + Size.values().forEach { size -> + Column(Modifier.border(1.dp, androidx.compose.ui.graphics.Color.Black).padding(8.dp)) { + LoadingIndicator(loadingAnim, size.factor, Speed.normal.factor) + Text(size.toString(), style = Typography.caption) + } + } + } + Divider() + Text(text = "Speeds", style = Typography.subtitle1.copy(fontWeight = FontWeight.Bold)) + Speed.values().forEach { speed -> + Column(Modifier.border(1.dp, androidx.compose.ui.graphics.Color.Black).padding(8.dp)) { + LoadingIndicator(loadingAnim, Size.medium.factor, speed.factor) + Text(speed.toString(), style = Typography.caption) + } + } + } + } + } + } } } HorizontalPagerIndicator( diff --git a/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingIndicator.kt b/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingIndicator.kt index cb3a03b..2c21d67 100644 --- a/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingIndicator.kt +++ b/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingIndicator.kt @@ -10,13 +10,14 @@ fun LoadingIndicator( speed: Double, color: Color = Color.Black ) { when (animation) { + LoadingAnimation.text -> LoadingText(color = color, size = size, speed = speed) LoadingAnimation.threeBalls -> LoadingThreeBalls(color = color, size = size, speed = speed) - LoadingAnimation.threeBallsRotation -> LoadingThreeBallsRotation( + LoadingAnimation.threeBallsRotation -> LoadingThreeBallsRotation( color = color, size = size, speed = speed ) - LoadingAnimation.threeBallsBouncing -> LoadingThreeBallsBouncing( + LoadingAnimation.threeBallsBouncing -> LoadingThreeBallsBouncing( color = color, size = size, speed = speed @@ -77,8 +78,10 @@ fun LoadingIndicator( ) LoadingAnimation.bar -> LoadingBar(color = color, size = size, speed = speed) LoadingAnimation.barStripes -> LoadingBarStripes(color = color, size = size, speed = speed) - LoadingAnimation.text -> LoadingText(color = color, size = size, speed = speed) LoadingAnimation.heart -> LoadingHeart(color = color, size = size, speed = speed)*/ + else -> { + // Do Nothing + } } } diff --git a/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingPreviewView.kt b/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingPreviewView.kt index fe2d6db..2411d94 100644 --- a/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingPreviewView.kt +++ b/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingPreviewView.kt @@ -50,6 +50,4 @@ fun LoadingPreviewView() { } } } - - } \ No newline at end of file diff --git a/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingText.kt b/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingText.kt new file mode 100644 index 0000000..b4cff10 --- /dev/null +++ b/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingText.kt @@ -0,0 +1,63 @@ +package dev.baseio.composeplayground.ui.animations.anmolverma.loadingindicators + +import androidx.compose.animation.core.animateIntAsState +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.offset +import androidx.compose.material.Text +import androidx.compose.material.Typography +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch + +@Composable +fun LoadingText(color: Color = Color.Black, size: Int = 50, speed: Double = 0.5) { + + val loadingText = "Loading..." + val maxCounter = loadingText.length + var counter by remember { + mutableStateOf(0) + } + + val scope = rememberCoroutineScope() + + LaunchedEffect(key1 = speed, block = { + scope.launch { + while (true) { + delay(speed.times(800).toLong()) + counter = if (counter == (maxCounter - 1)) 0 else counter + 1 + } + } + }) + + Row(Modifier, verticalAlignment = Alignment.CenterVertically) { + loadingText.forEachIndexed { index, c -> + LoadingCharAtString(size = size, counter = counter, index = index, color = color,text = c) + } + } +} + +@Composable +fun LoadingCharAtString( + size: Int, + counter: Int, + index: Int, + color: Color, + text : Char +) { + val verticalCharAnimation = animateIntAsState(targetValue = if (counter == index) -size / 10 else 0) + + Text( + modifier = Modifier.offset( + x = 0.dp, + y = verticalCharAnimation.value.dp + ), + text = text.toString(), + color = color, + fontSize = size.sp + ) +} diff --git a/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingThreeBalls.kt b/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingThreeBalls.kt index 12c6fd6..a22f631 100644 --- a/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingThreeBalls.kt +++ b/app/src/main/java/dev/baseio/composeplayground/ui/animations/anmolverma/loadingindicators/LoadingThreeBalls.kt @@ -39,7 +39,6 @@ fun LoadingThreeBalls(color: Color = Color.Black, size: Int = 50, speed: Double EachCircle(size, counter, index, color) } } - } @Composable