diff --git a/app/src/main/java/dev/baseio/composeplayground/MainActivity.kt b/app/src/main/java/dev/baseio/composeplayground/MainActivity.kt
index 1b20171..111e6e0 100644
--- a/app/src/main/java/dev/baseio/composeplayground/MainActivity.kt
+++ b/app/src/main/java/dev/baseio/composeplayground/MainActivity.kt
@@ -7,20 +7,30 @@ import android.view.View
import android.view.WindowManager
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
-import androidx.compose.foundation.background
-import androidx.compose.foundation.layout.*
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
-import androidx.core.view.WindowCompat
-import com.google.accompanist.insets.*
+import com.google.accompanist.insets.ProvideWindowInsets
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.HorizontalPagerIndicator
import com.google.accompanist.pager.rememberPagerState
-import dev.baseio.composeplayground.ui.animations.*
+import dev.baseio.composeplayground.ui.animations.BellAnimation
+import dev.baseio.composeplayground.ui.animations.ChatMessageReactions
+import dev.baseio.composeplayground.ui.animations.GlowingRingLoader
+import dev.baseio.composeplayground.ui.animations.IOSSleepSchedule
+import dev.baseio.composeplayground.ui.animations.LikeAnimation
+import dev.baseio.composeplayground.ui.animations.MenuToClose
+import dev.baseio.composeplayground.ui.animations.ScalingRotatingLoader
+import dev.baseio.composeplayground.ui.animations.YahooWeatherAndSun
+import dev.baseio.composeplayground.ui.animations.pacman.Pacman
import dev.baseio.composeplayground.ui.animations.planetarysystem.PlanetarySystem
import dev.baseio.composeplayground.ui.animations.pulltorefresh.PullToRefreshOne
import dev.baseio.composeplayground.ui.theme.ComposePlaygroundTheme
@@ -54,7 +64,7 @@ class MainActivity : ComponentActivity() {
modifier = Modifier
.weight(1f)
.fillMaxWidth(),
- count = 10, state = pagerState,
+ count = 11, state = pagerState,
) { page ->
// Our page content
when (page) {
@@ -106,6 +116,11 @@ class MainActivity : ComponentActivity() {
BellAnimation(Modifier.align(Alignment.Center))
}
}
+ 10 -> {
+ Box(modifier = Modifier.fillMaxSize()) {
+ Pacman(Modifier.align(Alignment.Center))
+ }
+ }
}
}
HorizontalPagerIndicator(
diff --git a/app/src/main/java/dev/baseio/composeplayground/contributors/PushpalRoy.kt b/app/src/main/java/dev/baseio/composeplayground/contributors/PushpalRoy.kt
new file mode 100644
index 0000000..e42adf6
--- /dev/null
+++ b/app/src/main/java/dev/baseio/composeplayground/contributors/PushpalRoy.kt
@@ -0,0 +1,48 @@
+package dev.baseio.composeplayground.contributors
+
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+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.graphics.Color
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import dev.baseio.composeplayground.R
+import dev.baseio.composeplayground.ui.theme.Typography
+
+const val pushpalRoyImageUrl = "https://ca.slack-edge.com/T02TLUWLZ-US7QYGQL9-2bba9d14df28-512"
+
+@Composable
+fun PushpalRoy(modifier: Modifier = Modifier) {
+ Row(verticalAlignment = Alignment.CenterVertically, modifier = modifier.padding(4.dp)) {
+ CoilImageBox(Modifier.size(64.dp), pushpalRoyImageUrl)
+ Column(verticalArrangement = Arrangement.Center, modifier = Modifier.padding(8.dp)) {
+ Text(
+ modifier = Modifier.padding(bottom = 6.dp),
+ text = stringResource(id = R.string.emp_mmh0230),
+ style = Typography.h6.copy(MaterialTheme.colors.onSurface),
+ )
+ Text(
+ text = stringResource(id = R.string.emp_mmh0230_email),
+ style = Typography.body2.copy(MaterialTheme.colors.onSurface),
+ color = Color(0xFFCACACA)
+ )
+ }
+ }
+}
+
+@Preview("Pushpal Roy Preview")
+@Composable
+fun PreviewPushpalRoy() {
+ Surface {
+ PushpalRoy()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/dev/baseio/composeplayground/ui/animations/pacman/Pacman.kt b/app/src/main/java/dev/baseio/composeplayground/ui/animations/pacman/Pacman.kt
new file mode 100644
index 0000000..68d59e6
--- /dev/null
+++ b/app/src/main/java/dev/baseio/composeplayground/ui/animations/pacman/Pacman.kt
@@ -0,0 +1,128 @@
+package dev.baseio.composeplayground.ui.animations.pacman
+
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.RepeatMode
+import androidx.compose.animation.core.animateFloat
+import androidx.compose.animation.core.infiniteRepeatable
+import androidx.compose.animation.core.rememberInfiniteTransition
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.Canvas
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.material.Surface
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.geometry.Size
+import androidx.compose.ui.graphics.Brush
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.SolidColor
+import androidx.compose.ui.graphics.drawscope.Fill
+import dev.baseio.composeplayground.contributors.PushpalRoy
+import dev.baseio.composeplayground.ui.animations.offGray
+
+@Composable
+fun Pacman(modifier: Modifier) {
+
+ val infiniteTransition = rememberInfiniteTransition()
+ val upperJawAnim by infiniteTransition.animateFloat(
+ initialValue = 360f,
+ targetValue = 300f,
+ animationSpec = infiniteRepeatable(
+ animation = tween(300, easing = LinearEasing),
+ repeatMode = RepeatMode.Reverse
+ )
+ )
+ val lowerJawAnim by infiniteTransition.animateFloat(
+ initialValue = 0f,
+ targetValue = 30f,
+ animationSpec = infiniteRepeatable(
+ animation = tween(300, easing = LinearEasing),
+ repeatMode = RepeatMode.Reverse
+ )
+ )
+ val foodAnim1 by infiniteTransition.animateFloat(
+ initialValue = 1000f,
+ targetValue = 690f,
+ animationSpec = infiniteRepeatable(
+ animation = tween(1200, easing = LinearEasing),
+ repeatMode = RepeatMode.Restart
+ )
+ )
+ val foodAnim2 by infiniteTransition.animateFloat(
+ initialValue = 1200f,
+ targetValue = 890f,
+ animationSpec = infiniteRepeatable(
+ animation = tween(durationMillis = 1200, easing = LinearEasing),
+ repeatMode = RepeatMode.Restart
+ )
+ )
+ Surface {
+ Box(
+ modifier = Modifier
+ .fillMaxSize()
+ .background(offGray)
+ ) {
+ Canvas(
+ modifier = modifier
+ .fillMaxSize()
+ .background(
+ brush = Brush.linearGradient(
+ colors = listOf(
+ Color(0xFF0F1A22),
+ Color(0xFF162631),
+ Color(0xFF1B2F3D),
+ Color(0xFF406C9E),
+ )
+ )
+ )
+ ) {
+ val canvasWidth = size.width
+ val canvasHeight = size.height
+
+ // Pacman
+ drawArc(
+ brush = SolidColor(Color(0xFFFFD500)),
+ startAngle = lowerJawAnim,
+ sweepAngle = upperJawAnim,
+ useCenter = true,
+ topLeft = Offset(x = canvasWidth / 4, y = canvasHeight / 3),
+ size = Size(size.minDimension / 2, size.minDimension / 2),
+ style = Fill
+ )
+
+ // Eye
+ drawCircle(
+ color = Color.Black,
+ radius = 20f,
+ center = Offset(x = (canvasWidth / 4) + 300, y = (canvasHeight / 3) + 110)
+ )
+
+ // Food particle 1
+ drawCircle(
+ color = Color(0xFFFF3D00),
+ radius = 25f,
+ center = Offset(x = foodAnim1, y = (canvasHeight / 3) + 270)
+ )
+
+ // Food particle 2
+ drawCircle(
+ color = Color(0xFFFF3D00),
+ radius = 25f,
+ center = Offset(x = foodAnim2, y = (canvasHeight / 3) + 270)
+ )
+ }
+ Box(
+ modifier = Modifier
+ .align(Alignment.BottomCenter)
+ .fillMaxWidth()
+ ) {
+ PushpalRoy(Modifier.align(Alignment.Center))
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a144b92..0afd057 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -2,6 +2,8 @@
Compose Playground
Anmol Verma
anmol.verma@mutualmobile.com\nanmol.verma4@gmail.com
+ Pushpal Roy
+ pushpal.roy@mutualmobile.com\npushplaroy2007@gmail.com
LOADING
\ No newline at end of file