更新 UI

This commit is contained in:
2024-07-17 14:35:18 +08:00
parent 3f9bfb1254
commit 5b530f3ef6
8 changed files with 393 additions and 253 deletions

View File

@@ -8,6 +8,7 @@ import androidx.activity.enableEdgeToEdge
import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -20,16 +21,26 @@ import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material3.Icon
import androidx.compose.material3.NavigationBar
import androidx.compose.material3.NavigationBarItem
import androidx.compose.material3.NavigationBarItemColors
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.material3.Tab
import androidx.compose.material3.TabRow
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.compositionLocalOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
@@ -37,6 +48,7 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.view.WindowCompat
import androidx.navigation.NavGraph
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
@@ -45,6 +57,7 @@ import androidx.navigation.compose.rememberNavController
import com.aiosman.riderpro.ui.theme.RiderProTheme
import com.google.accompanist.systemuicontroller.rememberSystemUiController
import com.google.android.libraries.places.api.Places
import kotlinx.coroutines.launch
class MainActivity : ComponentActivity() {
@@ -73,12 +86,7 @@ fun NavigationController(navController: NavHostController) {
NavHost(
navController = navController,
startDestination = NavigationItem.Home.route,
enterTransition = {
fadeIn(animationSpec = tween(0))
},
exitTransition = {
fadeOut(animationSpec = tween(0))
}) {
) {
// 带底部导航栏的路由:
listOf(
NavigationItem.Home,
@@ -111,11 +119,7 @@ fun NavigationController(navController: NavHostController) {
}
}
composable(route = "OfficialPhoto") {
Box(
modifier = Modifier.padding(bottom = navigationBarHeight)
) {
OfficialGalleryPage()
}
OfficialGalleryPage()
}
composable(route = "OfficialPhotographer") {
OfficialPhotographer()
@@ -128,11 +132,7 @@ fun NavigationController(navController: NavHostController) {
}
}
composable(route = "ModificationList") {
Box(
modifier = Modifier.padding(bottom = navigationBarHeight)
) {
ModificationListScreen()
}
ModificationListScreen()
}
composable(route = "MyMessage") {
@@ -205,26 +205,31 @@ fun ScaffoldWithNavigationBar(
NavigationBarItem(
selected = currentRoute == it.route,
onClick = {
// Check if the current route is not the same as the tab's route to avoid unnecessary navigation
if (currentRoute != it.route) {
navController.navigate(it.route)
navController.navigate(it.route) {
// Avoid creating a new layer on top of the navigation stack
launchSingleTop = true
// Attempt to pop up to the existing instance of the destination, if present
popUpTo(navController.graph.startDestinationId) {
saveState = true
}
// Restore state when navigating back to the composable
restoreState = true
}
}
// Additional logic for system UI color changes
when (it.route) {
NavigationItem.Add.route -> {
systemUiController.setSystemBarsColor(
color = Color.Black
)
systemUiController.setSystemBarsColor(color = Color.Black)
}
NavigationItem.Message.route -> {
systemUiController.setSystemBarsColor(
color = Color.Black
)
systemUiController.setSystemBarsColor(color = Color.Black)
}
else -> {
systemUiController.setSystemBarsColor(
color = Color.Transparent
)
systemUiController.setSystemBarsColor(color = Color.Transparent)
}
}
},