[优化] 优化代码

This commit is contained in:
HapeLee
2026-03-25 15:28:43 +08:00
parent 28d206f134
commit 0722e2a667
3 changed files with 38 additions and 4 deletions
@@ -60,6 +60,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.ClipEntry
import androidx.compose.ui.platform.LocalClipboard
import androidx.compose.ui.platform.LocalConfiguration
@@ -77,7 +78,6 @@ import io.legado.app.ui.book.import.remote.RemoteBookActivity
import io.legado.app.ui.book.manage.BookshelfManageActivity
import io.legado.app.ui.book.search.SearchActivity
import io.legado.app.ui.config.bookshelfConfig.BookshelfConfig
import io.legado.app.ui.widget.components.GlassTopAppBarDefaults
import io.legado.app.ui.widget.components.button.SmallOutlinedIconToggleButton
import io.legado.app.ui.widget.components.filePicker.FilePickerSheet
import io.legado.app.ui.widget.components.importComponents.SourceInputDialog
@@ -324,7 +324,7 @@ fun BookshelfScreen(
selectedTabIndex = selectedTabIndex,
edgePadding = 0.dp,
divider = { },
containerColor = GlassTopAppBarDefaults.containerColor(),
containerColor = Color.Transparent,
minTabWidth = 0.dp,
modifier = Modifier.weight(1f)
) {
@@ -87,6 +87,14 @@ object GlassTopAppBarDefaults {
)
}
@Composable
fun scrolledContainerColor(): Color {
return GlassDefaults.glassColor(
noBlurColor = MaterialTheme.colorScheme.surfaceContainer,
blurAlpha = GlassDefaults.TransparentAlpha
)
}
@Composable
fun controlContainerColor(): Color {
return GlassDefaults.glassColor(
@@ -1,14 +1,17 @@
package io.legado.app.ui.widget.components.topbar
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.animateColorAsState
import androidx.compose.animation.expandVertically
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.animation.shrinkVertically
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Close
@@ -16,17 +19,22 @@ import androidx.compose.material.icons.filled.MoreVert
import androidx.compose.material.icons.filled.Search
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.lerp
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.text.style.TextOverflow
import io.legado.app.ui.widget.components.AdaptiveAnimatedText
import io.legado.app.ui.widget.components.AnimatedTextLine
import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar
import io.legado.app.ui.widget.components.GlassTopAppBarDefaults
import io.legado.app.ui.widget.components.SearchBarSection
import io.legado.app.ui.widget.components.button.TopBarActionButton
import io.legado.app.ui.widget.components.button.TopbarNavigationButton
@@ -56,7 +64,21 @@ fun <T> DynamicTopAppBar(
var showMenu by remember { mutableStateOf(false) }
val isSelecting = state.selectedIds.isNotEmpty()
Column {
val containerColor = GlassTopAppBarDefaults.containerColor()
val scrolledColor = GlassTopAppBarDefaults.scrolledContainerColor()
val collapsedFraction = scrollBehavior.state.collapsedFraction
val animatedColor by animateColorAsState(
targetValue = lerp(containerColor, scrolledColor, collapsedFraction),
label = "TopBarContainerColor"
)
Column(
modifier = Modifier
.fillMaxWidth()
.background(animatedColor)
) {
GlassMediumFlexibleTopAppBar(
title = {
val titleText = when {
@@ -110,7 +132,11 @@ fun <T> DynamicTopAppBar(
}
}
},
scrollBehavior = scrollBehavior
scrollBehavior = scrollBehavior,
colors = TopAppBarDefaults.topAppBarColors(
containerColor = Color.Transparent,
scrolledContainerColor = Color.Transparent
)
)
AnimatedVisibility(