mirror of
https://github.com/AdrianKuta/android-challange-adrian-kuta.git
synced 2025-07-02 05:28:00 +02:00
Initial commit
This commit is contained in:
85
app/src/main/kotlin/dev/adriankuta/flights/MainActivity.kt
Normal file
85
app/src/main/kotlin/dev/adriankuta/flights/MainActivity.kt
Normal file
@ -0,0 +1,85 @@
|
||||
package dev.adriankuta.flights
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.SystemBarStyle
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.DisposableEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import dev.adriankuta.flights.ui.FlightsApp
|
||||
import dev.adriankuta.flights.ui.designsystem.theme.FlightsTheme
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@AndroidEntryPoint
|
||||
class MainActivity : ComponentActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
val splashScreen = installSplashScreen()
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
var isLoading: Boolean by mutableStateOf(true)
|
||||
|
||||
lifecycleScope.launch {
|
||||
@Suppress("MagicNumber")
|
||||
delay(500)
|
||||
isLoading = false
|
||||
}
|
||||
|
||||
splashScreen.setKeepOnScreenCondition {
|
||||
isLoading
|
||||
}
|
||||
|
||||
enableEdgeToEdge()
|
||||
|
||||
setContent {
|
||||
val darkTheme = shouldUseDarkTheme()
|
||||
// Update the edge to edge configuration to match the theme
|
||||
// This is the same parameters as the default enableEdgeToEdge call, but we manually
|
||||
// resolve whether or not to show dark theme using uiState, since it can be different
|
||||
// than the configuration's dark theme value based on the user preference.
|
||||
DisposableEffect(darkTheme) {
|
||||
enableEdgeToEdge(
|
||||
statusBarStyle = SystemBarStyle.auto(
|
||||
android.graphics.Color.TRANSPARENT,
|
||||
android.graphics.Color.TRANSPARENT,
|
||||
) { darkTheme },
|
||||
navigationBarStyle = SystemBarStyle.auto(
|
||||
lightScrim,
|
||||
darkScrim,
|
||||
) { darkTheme },
|
||||
)
|
||||
onDispose {}
|
||||
}
|
||||
FlightsTheme {
|
||||
FlightsApp()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns `true` if dark theme should be used, as a function of the [uiState] and the
|
||||
* current system context.
|
||||
*/
|
||||
@Composable
|
||||
private fun shouldUseDarkTheme(): Boolean = isSystemInDarkTheme()
|
||||
|
||||
/**
|
||||
* The default light scrim, as defined by androidx and the platform:
|
||||
* https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:activity/activity/src/main/java/androidx/activity/EdgeToEdge.kt;l=35-38;drc=27e7d52e8604a080133e8b842db10c89b4482598
|
||||
*/
|
||||
private val lightScrim = android.graphics.Color.argb(0xe6, 0xFF, 0xFF, 0xFF)
|
||||
|
||||
/**
|
||||
* The default dark scrim, as defined by androidx and the platform:
|
||||
* https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:activity/activity/src/main/java/androidx/activity/EdgeToEdge.kt;l=40-44;drc=27e7d52e8604a080133e8b842db10c89b4482598
|
||||
*/
|
||||
private val darkScrim = android.graphics.Color.argb(0x80, 0x1b, 0x1b, 0x1b)
|
Reference in New Issue
Block a user