diff --git a/app/src/main/java/com/jik/movie/navigation/MovieNavHost.kt b/app/src/main/java/com/jik/movie/navigation/MovieNavHost.kt index 8941500..614f68f 100644 --- a/app/src/main/java/com/jik/movie/navigation/MovieNavHost.kt +++ b/app/src/main/java/com/jik/movie/navigation/MovieNavHost.kt @@ -14,14 +14,13 @@ fun MovieNavHost( navController: NavHostController, modifier: Modifier = Modifier, startDestination: String = HomeNavigation.route, - ExpandTopBar: @Composable () -> Unit, ) { NavHost( navController = navController, startDestination = startDestination, modifier = modifier ) { - installHomeScreen(ExpandTopBar) + installHomeScreen() installPopularScreen(navController) installDetailScreen() } diff --git a/app/src/main/java/com/jik/movie/ui/MovieApp.kt b/app/src/main/java/com/jik/movie/ui/MovieApp.kt index 69306c6..c153e41 100644 --- a/app/src/main/java/com/jik/movie/ui/MovieApp.kt +++ b/app/src/main/java/com/jik/movie/ui/MovieApp.kt @@ -1,36 +1,26 @@ package com.jik.movie.ui -import androidx.compose.foundation.layout.* -import androidx.compose.material3.* +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.unit.dp -import com.jik.core.designsystem.component.* +import com.jik.core.designsystem.component.MovieNavigationBar +import com.jik.core.designsystem.component.MovieNavigationBarItem +import com.jik.core.designsystem.component.NavigationBarCornerSize import com.jik.core.designsystem.theme.MovieTheme import com.jik.movie.navigation.MovieNavHost import com.jik.movie.navigation.TopLevelDestination -@OptIn(ExperimentalMaterial3Api::class) @Composable fun MovieApp() { MovieTheme( dynamicColor = false ) { val appState = rememberMovieAppState() - val scrollBehavior = appState.topAppBarScrollBehavior val destination = appState.currentTopLevelDestination Scaffold( - modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), - topBar = { - if (destination != null) { - MovieTopAppBar( - titleRes = destination.titleTextId, - scrollBehavior = scrollBehavior - ) - } - }, bottomBar = { if (destination != null) { MovieBottomBar( @@ -50,12 +40,7 @@ fun MovieApp() { top = topPadding, bottom = if (destination != null && bottomPadding > 0.dp) bottomPadding - NavigationBarCornerSize else bottomPadding - ), - ExpandTopBar = { - if (scrollBehavior.state.heightOffset < 0.0) { - scrollBehavior.state.heightOffset = 0f - } - } + ) ) } } diff --git a/feature-home/src/main/java/com/jik/feature/home/navigation/HomeNavigation.kt b/feature-home/src/main/java/com/jik/feature/home/navigation/HomeNavigation.kt index f5a7895..38ceb0a 100644 --- a/feature-home/src/main/java/com/jik/feature/home/navigation/HomeNavigation.kt +++ b/feature-home/src/main/java/com/jik/feature/home/navigation/HomeNavigation.kt @@ -2,7 +2,6 @@ package com.jik.feature.home.navigation import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding -import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder @@ -19,13 +18,10 @@ object HomeNavigation { navigate(route, navOptions) } - fun NavGraphBuilder.installHomeScreen( - ExpandTopBar: @Composable () -> Unit, - ) { + fun NavGraphBuilder.installHomeScreen() { composable( route = HomeNavigation.route ) { - ExpandTopBar() HomeScreen() Spacer(modifier = Modifier.padding(bottom = NavigationBarCornerSize)) } diff --git a/feature-popular/src/main/java/com/jik/feature/popular/PopularScreen.kt b/feature-popular/src/main/java/com/jik/feature/popular/PopularScreen.kt index 0ee0e90..af56253 100644 --- a/feature-popular/src/main/java/com/jik/feature/popular/PopularScreen.kt +++ b/feature-popular/src/main/java/com/jik/feature/popular/PopularScreen.kt @@ -5,10 +5,15 @@ import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.rememberLazyGridState +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Surface +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel @@ -20,6 +25,7 @@ import com.jik.core.ui.pagination.Pageable import kotlinx.coroutines.launch +@OptIn(ExperimentalMaterial3Api::class) @Composable fun PopularScreen( onPosterCardClick: (Long) -> Unit, @@ -27,15 +33,30 @@ fun PopularScreen( popularViewModel: PopularViewModel = hiltViewModel() ) { - PopularScreenContent( - popularUiStates = popularViewModel.popularUiStates, - onLoadMore = popularViewModel::getPopularMovies, - onRetry = popularViewModel::getPopularMovies, - onPosterCardClick = onPosterCardClick, - modifier = modifier, - ) + val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior() + + Surface(modifier = modifier.nestedScroll(scrollBehavior.nestedScrollConnection)) { + Column { + PopularScreenTopBar(scrollBehavior = scrollBehavior) + PopularScreenContent( + popularUiStates = popularViewModel.popularUiStates, + onLoadMore = popularViewModel::getPopularMovies, + onRetry = popularViewModel::getPopularMovies, + onPosterCardClick = onPosterCardClick, + modifier = modifier, + ) + } + } } +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun PopularScreenTopBar(scrollBehavior: TopAppBarScrollBehavior) { + MovieTopAppBar( + titleRes = R.string.popular, + scrollBehavior = scrollBehavior + ) +} @Composable fun PopularScreenContent(