Add splashScreen
This commit is contained in:
@@ -13,8 +13,10 @@ import androidx.compose.material.Surface
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.res.vectorResource
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import com.vk.api.sdk.VK
|
||||
import com.vk.api.sdk.VKApiCallback
|
||||
@@ -44,6 +46,9 @@ fun Dp.SpacerWidth() = Spacer(Modifier.width(this))
|
||||
@Composable
|
||||
fun Dp.SpacerHeight() = Spacer(Modifier.height(this))
|
||||
|
||||
@Composable
|
||||
fun Int.AsImageVector() = ImageVector.vectorResource(this)
|
||||
|
||||
|
||||
class MainActivity : ComponentActivity() {
|
||||
|
||||
|
||||
@@ -7,6 +7,9 @@ import androidx.navigation.compose.rememberNavController
|
||||
import ru.megboyzz.studentq.screens.*
|
||||
|
||||
sealed class AppNavRoute(val route: String){
|
||||
|
||||
object Splash : AppNavRoute("splash_screen")
|
||||
|
||||
object Auth: AppNavRoute("auth_screen")
|
||||
object Queues: AppNavRoute("all_queues_screen")
|
||||
object Queue: AppNavRoute("in_queue_screen")
|
||||
@@ -19,8 +22,9 @@ fun AppNavHost(){
|
||||
val navController = rememberNavController()
|
||||
NavHost(
|
||||
navController = navController,
|
||||
startDestination = AppNavRoute.Auth.route
|
||||
startDestination = AppNavRoute.Splash.route
|
||||
){
|
||||
composable(AppNavRoute.Splash.route) { SplashScreen(navController) }
|
||||
composable(AppNavRoute.Auth.route) { Auth(navController) }
|
||||
composable(AppNavRoute.Queues.route) { Queues(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
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -2,6 +2,6 @@
|
||||
<resources>
|
||||
|
||||
<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>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user