From 7699cfeea8411e5df2fc5474dbcca41dc4a34386 Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Sun, 17 May 2026 05:06:26 +0800 Subject: [PATCH] =?UTF-8?q?MIUIX=E7=9A=84=E6=A0=87=E7=AD=BE=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/ui/main/MainScreen.kt | 5 +- .../ui/widget/components/AppNavigationBar.kt | 148 ------------------ .../components/navigation/AppNavigationBar.kt | 8 +- 3 files changed, 11 insertions(+), 150 deletions(-) delete mode 100644 app/src/main/java/io/legado/app/ui/widget/components/AppNavigationBar.kt diff --git a/app/src/main/java/io/legado/app/ui/main/MainScreen.kt b/app/src/main/java/io/legado/app/ui/main/MainScreen.kt index c43070981..da618926e 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainScreen.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainScreen.kt @@ -301,7 +301,10 @@ fun MainScreen( modifier = Modifier.weight(1f), bottomBar = { if (!useRail && mainUiState.showBottomView && !useFloatingBottomBar) { - AppNavigationBar() { + AppNavigationBar( + showLabel = showLabel, + alwaysShowLabel = alwaysShowLabel + ) { destinations.forEachIndexed { index, destination -> val selected = pagerState.targetPage == index val customIconPath = destination.customIconPath diff --git a/app/src/main/java/io/legado/app/ui/widget/components/AppNavigationBar.kt b/app/src/main/java/io/legado/app/ui/widget/components/AppNavigationBar.kt deleted file mode 100644 index 2eb5e2f03..000000000 --- a/app/src/main/java/io/legado/app/ui/widget/components/AppNavigationBar.kt +++ /dev/null @@ -1,148 +0,0 @@ -package io.legado.app.ui.widget.components - -import androidx.compose.foundation.background -import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.RowScope -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.BottomAppBarDefaults -import androidx.compose.material3.NavigationBar -import androidx.compose.material3.NavigationBarItem -import androidx.compose.material3.NavigationBarItemDefaults -import androidx.compose.material3.Text -import androidx.compose.material3.ripple -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.unit.dp -import io.legado.app.ui.config.themeConfig.ThemeConfig -import io.legado.app.ui.theme.LegadoTheme -import io.legado.app.ui.theme.LocalHazeState -import io.legado.app.ui.theme.ThemeResolver -import io.legado.app.ui.theme.regularHazeEffect -import top.yukonga.miuix.kmp.basic.NavigationBarDisplayMode -import top.yukonga.miuix.kmp.theme.MiuixTheme -import top.yukonga.miuix.kmp.basic.NavigationBar as MiuixNavigationBar -import top.yukonga.miuix.kmp.basic.NavigationBarItem as MiuixNavigationBarItem - -@Composable -fun AppNavigationBar( - modifier: Modifier = Modifier, - miuixMode: NavigationBarDisplayMode = NavigationBarDisplayMode.IconAndText, - content: @Composable RowScope.() -> Unit -) { - val isMiuix = ThemeResolver.isMiuixEngine(LegadoTheme.composeEngine) - val opacity = (ThemeConfig.bottomBarOpacity.coerceIn(0, 100)) / 100f - val hazeState = LocalHazeState.current - val hazeModifier = if (hazeState != null) { - Modifier.regularHazeEffect(hazeState) - } else { - Modifier - } - - if (isMiuix) { - val baseColor = if (ThemeConfig.enableDeepPersonalization && ThemeConfig.secondaryThemeColor != 0) { - Color(ThemeConfig.secondaryThemeColor) - } else { - GlassDefaults.glassColor( - noBlurColor = MiuixTheme.colorScheme.surface, - blurAlpha = GlassDefaults.TransparentAlpha - ) - } - val finalColor = baseColor.copy(alpha = (baseColor.alpha * opacity).coerceIn(0f, 1f)) - - MiuixNavigationBar( - modifier = modifier.then(hazeModifier), - color = finalColor, - mode = miuixMode, - content = content - ) - } else { - val baseColor = if (ThemeConfig.enableDeepPersonalization && ThemeConfig.secondaryThemeColor != 0) { - Color(ThemeConfig.secondaryThemeColor) - } else { - GlassDefaults.glassColor( - noBlurColor = BottomAppBarDefaults.containerColor, - blurAlpha = GlassDefaults.TransparentAlpha - ) - } - val finalColor = baseColor.copy(alpha = (baseColor.alpha * opacity).coerceIn(0f, 1f)) - - NavigationBar( - modifier = modifier.then(hazeModifier), - containerColor = finalColor, - content = content - ) - } -} - -@Composable -fun RowScope.AppNavigationBarItem( - selected: Boolean, - onClick: () -> Unit, - modifier: Modifier = Modifier, - labelString: String, - iconVector: ImageVector, - m3Icon: @Composable () -> Unit, - m3IndicatorColor: Color, - m3ShowLabel: Boolean, - m3AlwaysShowLabel: Boolean, - useCustomIcon: Boolean = false, -) { - val isMiuix = ThemeResolver.isMiuixEngine(LegadoTheme.composeEngine) - val useCustomIconBox = useCustomIcon && ThemeConfig.useFloatingBottomBar - - if (useCustomIconBox) { - Box( - modifier = modifier - .weight(1f) - .fillMaxHeight() - .clickable( - interactionSource = remember { MutableInteractionSource() }, - indication = ripple(bounded = false, radius = 32.dp), - onClick = onClick - ), - contentAlignment = Alignment.Center - ) { - if (selected) { - Box( - modifier = Modifier - .width(64.dp) - .height(32.dp) - .clip(RoundedCornerShape(16.dp)) - .background(m3IndicatorColor) - ) - } - m3Icon() - } - } else if (isMiuix) { - MiuixNavigationBarItem( - selected = selected, - onClick = onClick, - icon = iconVector, - label = labelString, - modifier = modifier - ) - } else { - NavigationBarItem( - selected = selected, - onClick = onClick, - modifier = modifier, - icon = m3Icon, - colors = NavigationBarItemDefaults.colors(indicatorColor = m3IndicatorColor), - label = if (m3ShowLabel) { - { Text(labelString) } - } else null, - alwaysShowLabel = m3AlwaysShowLabel - ) - } -} diff --git a/app/src/main/java/io/legado/app/ui/widget/components/navigation/AppNavigationBar.kt b/app/src/main/java/io/legado/app/ui/widget/components/navigation/AppNavigationBar.kt index ec09cb31f..d781e2de3 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/navigation/AppNavigationBar.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/navigation/AppNavigationBar.kt @@ -39,10 +39,16 @@ import top.yukonga.miuix.kmp.basic.NavigationBarItem as MiuixNavigationBarItem @Composable fun AppNavigationBar( modifier: Modifier = Modifier, - miuixMode: NavigationBarDisplayMode = NavigationBarDisplayMode.IconAndText, + showLabel: Boolean = true, + alwaysShowLabel: Boolean = true, content: @Composable RowScope.() -> Unit ) { val isMiuix = ThemeResolver.isMiuixEngine(LegadoTheme.composeEngine) + val miuixMode = when { + !showLabel -> NavigationBarDisplayMode.IconOnly + alwaysShowLabel -> NavigationBarDisplayMode.IconAndText + else -> NavigationBarDisplayMode.IconWithSelectedLabel + } val opacity = (ThemeConfig.bottomBarOpacity.coerceIn(0, 100)) / 100f val hazeState = LocalHazeState.current val hazeModifier = if (hazeState != null) {