mirror of
https://github.com/owenlejeune/TVTime.git
synced 2026-01-03 13:21:20 -05:00
display backdrop image below status bar
This commit is contained in:
@@ -17,6 +17,7 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
|
import androidx.core.view.WindowCompat
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
@@ -29,17 +30,21 @@ class MainActivity : ComponentActivity() {
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContent {
|
setContent {
|
||||||
MyApp()
|
val displayUnderStatusBar = remember { mutableStateOf(false) }
|
||||||
|
// if (displayUnderStatusBar.value) {
|
||||||
|
WindowCompat.setDecorFitsSystemWindows(window, !displayUnderStatusBar.value)
|
||||||
|
// }
|
||||||
|
MyApp(displayUnderStatusBar = displayUnderStatusBar)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun MyApp() {
|
fun MyApp(displayUnderStatusBar: MutableState<Boolean> = mutableStateOf(false)) {
|
||||||
TVTimeTheme {
|
TVTimeTheme {
|
||||||
val appNavController = rememberNavController()
|
val appNavController = rememberNavController()
|
||||||
Box {
|
Box {
|
||||||
MainNavigationRoutes(navController = appNavController)
|
MainNavigationRoutes(navController = appNavController, displayUnderStatusBar = displayUnderStatusBar)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,18 @@
|
|||||||
package com.owenlejeune.tvtime.ui.navigation
|
package com.owenlejeune.tvtime.ui.navigation
|
||||||
|
|
||||||
|
import androidx.compose.foundation.isSystemInDarkTheme
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.MutableState
|
||||||
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.NavHostController
|
import androidx.navigation.NavHostController
|
||||||
import androidx.navigation.NavType
|
import androidx.navigation.NavType
|
||||||
import androidx.navigation.compose.NavHost
|
import androidx.navigation.compose.NavHost
|
||||||
import androidx.navigation.compose.composable
|
import androidx.navigation.compose.composable
|
||||||
import androidx.navigation.navArgument
|
import androidx.navigation.navArgument
|
||||||
|
import com.google.accompanist.systemuicontroller.rememberSystemUiController
|
||||||
import com.owenlejeune.tvtime.ui.screens.DetailView
|
import com.owenlejeune.tvtime.ui.screens.DetailView
|
||||||
import com.owenlejeune.tvtime.ui.screens.DetailViewType
|
import com.owenlejeune.tvtime.ui.screens.DetailViewType
|
||||||
import com.owenlejeune.tvtime.ui.screens.MainAppView
|
import com.owenlejeune.tvtime.ui.screens.MainAppView
|
||||||
@@ -16,9 +22,12 @@ import com.owenlejeune.tvtime.ui.screens.tabs.SettingsTab
|
|||||||
import com.owenlejeune.tvtime.ui.screens.tabs.TvTab
|
import com.owenlejeune.tvtime.ui.screens.tabs.TvTab
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun MainNavigationRoutes(navController: NavHostController) {
|
fun MainNavigationRoutes(navController: NavHostController, displayUnderStatusBar: MutableState<Boolean> = mutableStateOf(false)) {
|
||||||
NavHost(navController = navController, startDestination = MainNavItem.MainView.route) {
|
NavHost(navController = navController, startDestination = MainNavItem.MainView.route) {
|
||||||
composable(MainNavItem.MainView.route) {
|
composable(MainNavItem.MainView.route) {
|
||||||
|
displayUnderStatusBar.value = false
|
||||||
|
val systemUiController = rememberSystemUiController()
|
||||||
|
systemUiController.setStatusBarColor(MaterialTheme.colorScheme.background, !isSystemInDarkTheme())
|
||||||
MainAppView(appNavController = navController)
|
MainAppView(appNavController = navController)
|
||||||
}
|
}
|
||||||
composable(
|
composable(
|
||||||
@@ -28,6 +37,9 @@ fun MainNavigationRoutes(navController: NavHostController) {
|
|||||||
navArgument("TYPE_KEY") { type = NavType.EnumType(DetailViewType::class.java) }
|
navArgument("TYPE_KEY") { type = NavType.EnumType(DetailViewType::class.java) }
|
||||||
)
|
)
|
||||||
) { navBackStackEntry ->
|
) { navBackStackEntry ->
|
||||||
|
displayUnderStatusBar.value = true
|
||||||
|
val systemUiController = rememberSystemUiController()
|
||||||
|
systemUiController.setStatusBarColor(Color.Transparent, !isSystemInDarkTheme())
|
||||||
val args = navBackStackEntry.arguments
|
val args = navBackStackEntry.arguments
|
||||||
DetailView(
|
DetailView(
|
||||||
appNavController = navController,
|
appNavController = navController,
|
||||||
|
|||||||
@@ -13,11 +13,12 @@ import androidx.compose.runtime.MutableState
|
|||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.Brush
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.constraintlayout.compose.ConstraintLayout
|
import androidx.constraintlayout.compose.ConstraintLayout
|
||||||
import androidx.core.view.WindowCompat
|
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import com.owenlejeune.tvtime.api.tmdb.DetailService
|
import com.owenlejeune.tvtime.api.tmdb.DetailService
|
||||||
import com.owenlejeune.tvtime.api.tmdb.MoviesService
|
import com.owenlejeune.tvtime.api.tmdb.MoviesService
|
||||||
@@ -87,7 +88,7 @@ fun DetailView(
|
|||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.constrainAs(title) {
|
.constrainAs(title) {
|
||||||
bottom.linkTo(backdropImage.bottom, margin = 8.dp)
|
bottom.linkTo(backdropImage.bottom, margin = 8.dp)
|
||||||
start.linkTo(parent.start, margin = 16.dp)
|
start.linkTo(parent.start, margin = 20.dp)
|
||||||
end.linkTo(parent.end, margin = 16.dp)
|
end.linkTo(parent.end, margin = 16.dp)
|
||||||
}
|
}
|
||||||
.padding(start = 16.dp, end = 16.dp)
|
.padding(start = 16.dp, end = 16.dp)
|
||||||
@@ -101,9 +102,10 @@ fun DetailView(
|
|||||||
onClick = { appNavController.popBackStack() },
|
onClick = { appNavController.popBackStack() },
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.constrainAs(backButton) {
|
.constrainAs(backButton) {
|
||||||
top.linkTo(parent.top, 8.dp)
|
top.linkTo(parent.top, 16.dp)
|
||||||
start.linkTo(parent.start, 12.dp)
|
start.linkTo(parent.start, 12.dp)
|
||||||
}
|
}
|
||||||
|
.background(brush = Brush.radialGradient(colors = listOf(Color.Black, Color.Transparent)))
|
||||||
.wrapContentSize()
|
.wrapContentSize()
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ fun MainAppView(appNavController: NavController) {
|
|||||||
TopAppBarDefaults.exitUntilCollapsedScrollBehavior(decayAnimationSpec)
|
TopAppBarDefaults.exitUntilCollapsedScrollBehavior(decayAnimationSpec)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// todo - scroll state not remember when returing from detail screen
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
|
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
|
||||||
backgroundColor = MaterialTheme.colorScheme.background,
|
backgroundColor = MaterialTheme.colorScheme.background,
|
||||||
|
|||||||
Reference in New Issue
Block a user