Add splashScreen

This commit is contained in:
Michael Kits
2022-11-05 11:50:35 +03:00
parent 1941524340
commit b614ae82d2
5 changed files with 72 additions and 12 deletions
@@ -13,8 +13,10 @@ import androidx.compose.material.Surface
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import com.vk.api.sdk.VK import com.vk.api.sdk.VK
import com.vk.api.sdk.VKApiCallback import com.vk.api.sdk.VKApiCallback
@@ -44,6 +46,9 @@ fun Dp.SpacerWidth() = Spacer(Modifier.width(this))
@Composable @Composable
fun Dp.SpacerHeight() = Spacer(Modifier.height(this)) fun Dp.SpacerHeight() = Spacer(Modifier.height(this))
@Composable
fun Int.AsImageVector() = ImageVector.vectorResource(this)
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
@@ -7,6 +7,9 @@ import androidx.navigation.compose.rememberNavController
import ru.megboyzz.studentq.screens.* import ru.megboyzz.studentq.screens.*
sealed class AppNavRoute(val route: String){ sealed class AppNavRoute(val route: String){
object Splash : AppNavRoute("splash_screen")
object Auth: AppNavRoute("auth_screen") object Auth: AppNavRoute("auth_screen")
object Queues: AppNavRoute("all_queues_screen") object Queues: AppNavRoute("all_queues_screen")
object Queue: AppNavRoute("in_queue_screen") object Queue: AppNavRoute("in_queue_screen")
@@ -19,8 +22,9 @@ fun AppNavHost(){
val navController = rememberNavController() val navController = rememberNavController()
NavHost( NavHost(
navController = navController, navController = navController,
startDestination = AppNavRoute.Auth.route startDestination = AppNavRoute.Splash.route
){ ){
composable(AppNavRoute.Splash.route) { SplashScreen(navController) }
composable(AppNavRoute.Auth.route) { Auth(navController) } composable(AppNavRoute.Auth.route) { Auth(navController) }
composable(AppNavRoute.Queues.route) { Queues(navController) } composable(AppNavRoute.Queues.route) { Queues(navController) }
composable(AppNavRoute.Queue.route) { Queue(navController) } composable(AppNavRoute.Queue.route) { Queue(navController) }
@@ -0,0 +1,61 @@
package ru.megboyzz.studentq.screens
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.tween
import androidx.compose.foundation.background
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.size
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Email
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.navigation.NavHostController
import kotlinx.coroutines.delay
import ru.megboyzz.studentq.AsImageVector
import ru.megboyzz.studentq.AsPainter
import ru.megboyzz.studentq.R
import ru.megboyzz.studentq.navigation.AppNavRoute
@Composable
fun SplashScreen(navHostController: NavHostController){
var startAnimation by remember { mutableStateOf(false) }
val alphaAnim = animateFloatAsState(
targetValue = if (startAnimation) 1f else 0f,
animationSpec = tween(
durationMillis = 1000
)
)
LaunchedEffect(key1 = true) {
startAnimation = true
delay(1000)
navHostController.popBackStack()
navHostController.navigate(AppNavRoute.Auth.route)
}
Splash(alpha = alphaAnim.value)
}
@Composable
fun Splash(alpha: Float) {
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Icon(
modifier = Modifier
.size(120.dp)
.alpha(alpha = alpha),
imageVector = R.drawable.icon.AsImageVector(),
contentDescription = "Logo Icon",
tint = Color.White
)
}
}
-10
View File
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>
+1 -1
View File
@@ -2,6 +2,6 @@
<resources> <resources>
<style name="Theme.Studentq" parent="android:Theme.Material.Light.NoActionBar"> <style name="Theme.Studentq" parent="android:Theme.Material.Light.NoActionBar">
<item name="android:statusBarColor">@color/purple_700</item> <item name="android:statusBarColor">#CCE6195E</item>
</style> </style>
</resources> </resources>