From 56d181bce3959072d51f7998e22eb3f68f10e510 Mon Sep 17 00:00:00 2001 From: BoatingCloud <1759888028@qq.com> Date: Thu, 27 Aug 2026 23:13:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BA=95=E6=A0=8F=E5=9B=BE?= =?UTF-8?q?=E6=A0=87=E4=B8=8E=E9=99=8D=E7=BA=A7=E7=8E=BB=E7=92=83=E7=BB=86?= =?UTF-8?q?=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../myapplication/screens/LibraryScreen.kt | 15 ++++++---- .../example/myapplication/ui/AppBottomBar.kt | 4 +-- .../example/myapplication/ui/LiquidGlass.kt | 2 +- .../ui/design/LumaDesignSystem.kt | 30 +++++++++++-------- memory/2026-08-27.md | 6 ++++ memory/projects.md | 1 + 6 files changed, 37 insertions(+), 21 deletions(-) diff --git a/app/src/main/kotlin/com/example/myapplication/screens/LibraryScreen.kt b/app/src/main/kotlin/com/example/myapplication/screens/LibraryScreen.kt index 3d1e233..727cfd0 100644 --- a/app/src/main/kotlin/com/example/myapplication/screens/LibraryScreen.kt +++ b/app/src/main/kotlin/com/example/myapplication/screens/LibraryScreen.kt @@ -173,7 +173,7 @@ private fun ServerCard(server: EmbyServer, tint: Color, onClick: () -> Unit, onC LumaAsyncImage(model = ImageRequest.Builder(LocalContext.current).data(server.iconUrl).crossfade(true).build(), contentDescription = null, modifier = Modifier.size(46.dp).clip(RoundedCornerShape(14.dp)), contentScale = ContentScale.Crop) } else { Box(Modifier.size(46.dp).clip(RoundedCornerShape(14.dp)).background(Brush.linearGradient(listOf(tint, tint.copy(alpha = 0.7f)))), contentAlignment = Alignment.Center) { - LumaIconView(LumaIcon.Play, contentDescription = null, tint = Color.White, modifier = Modifier.size(26.dp)) + LumaIconView(LumaIcon.Server, contentDescription = null, tint = Color.White, modifier = Modifier.size(26.dp)) } } Spacer(Modifier.width(12.dp)) @@ -237,7 +237,7 @@ private fun ServerGridCard(server: EmbyServer, tint: Color, onClick: () -> Unit, Modifier.size(48.dp).clip(RoundedCornerShape(14.dp)).background(Brush.linearGradient(listOf(tint, tint.copy(alpha = 0.7f)))), contentAlignment = Alignment.Center, ) { - LumaIconView(LumaIcon.Play, contentDescription = null, tint = Color.White, modifier = Modifier.size(26.dp)) + LumaIconView(LumaIcon.Server, contentDescription = null, tint = Color.White, modifier = Modifier.size(26.dp)) } } Spacer(Modifier.width(10.dp)) @@ -517,12 +517,17 @@ internal fun IconLibraryManagerScreenContent( ) { Box(Modifier.width(86.dp)) { Box( - Modifier.size(34.dp) - .lumaGlass(radius = 17.dp, level = com.example.myapplication.ui.design.LumaGlassLevel.Floating) + Modifier.size(48.dp) .clickable(indication = null, interactionSource = remember { MutableInteractionSource() }) { onBack() }, contentAlignment = Alignment.Center, ) { - LumaIconView(LumaIcon.Close, contentDescription = stringResource(Res.string.back), tint = GlassTokens.text, modifier = Modifier.size(19.dp)) + Box( + Modifier.size(34.dp) + .lumaGlass(radius = 17.dp, level = com.example.myapplication.ui.design.LumaGlassLevel.Floating), + contentAlignment = Alignment.Center, + ) { + LumaIconView(LumaIcon.Close, contentDescription = stringResource(Res.string.back), tint = GlassTokens.text, modifier = Modifier.size(19.dp)) + } } } Box(Modifier.weight(1f), contentAlignment = Alignment.Center) { diff --git a/app/src/main/kotlin/com/example/myapplication/ui/AppBottomBar.kt b/app/src/main/kotlin/com/example/myapplication/ui/AppBottomBar.kt index 2765346..b78eaa3 100644 --- a/app/src/main/kotlin/com/example/myapplication/ui/AppBottomBar.kt +++ b/app/src/main/kotlin/com/example/myapplication/ui/AppBottomBar.kt @@ -74,7 +74,7 @@ fun LiquidAppBottomBar( selected = selectedTab == index, contentDescription = stringResource(tab.labelRes), tint = if (isGhostLayer) Color.White else if (selectedTab == index) LumaColors.accent else inactive, - modifier = Modifier.size(33.dp), + modifier = Modifier.size(36.dp), ) Spacer(Modifier.height(3.dp)) Text( @@ -136,7 +136,7 @@ fun LiquidAppBottomBar( icon = LumaIcon.Search, contentDescription = null, tint = if (searchSelected) LumaColors.accent else inactive, - modifier = Modifier.size(37.dp), + modifier = Modifier.size(41.dp), ) Text( text = stringResource(Res.string.search), diff --git a/app/src/main/kotlin/com/example/myapplication/ui/LiquidGlass.kt b/app/src/main/kotlin/com/example/myapplication/ui/LiquidGlass.kt index c30a607..f64a30d 100644 --- a/app/src/main/kotlin/com/example/myapplication/ui/LiquidGlass.kt +++ b/app/src/main/kotlin/com/example/myapplication/ui/LiquidGlass.kt @@ -358,7 +358,7 @@ fun GlassSearchField( if (value.isNotEmpty()) { Box( Modifier - .size(40.dp) + .size(48.dp) .clickable( indication = null, interactionSource = remember { MutableInteractionSource() }, diff --git a/app/src/main/kotlin/com/example/myapplication/ui/design/LumaDesignSystem.kt b/app/src/main/kotlin/com/example/myapplication/ui/design/LumaDesignSystem.kt index e2274e4..99bdbd2 100644 --- a/app/src/main/kotlin/com/example/myapplication/ui/design/LumaDesignSystem.kt +++ b/app/src/main/kotlin/com/example/myapplication/ui/design/LumaDesignSystem.kt @@ -221,7 +221,11 @@ fun Modifier.lumaFallbackGlass( Color(0xFF121B27).copy(alpha = 0.46f) } val edge = if (selected) { - LumaColors.glassHighlight.copy(alpha = if (light) 0.34f else 0.26f) + if (light) { + Color(0xFF9BA8B8).copy(alpha = 0.28f) + } else { + Color.White.copy(alpha = 0.22f) + } } else { LumaColors.glassHighlight.copy(alpha = if (light) 0.18f else 0.14f) } @@ -229,19 +233,19 @@ fun Modifier.lumaFallbackGlass( if (light) { Brush.horizontalGradient( listOf( - LumaColors.accent.copy(alpha = 0.10f), - Color.White.copy(alpha = 0.40f), - Color.White.copy(alpha = 0.30f), - LumaColors.accent.copy(alpha = 0.08f), + Color.White.copy(alpha = 0.44f), + Color.White.copy(alpha = 0.66f), + Color(0xFFDCE3EB).copy(alpha = 0.48f), + Color.White.copy(alpha = 0.38f), ), ) } else { Brush.horizontalGradient( listOf( - LumaColors.accent.copy(alpha = 0.28f), Color.White.copy(alpha = 0.16f), - Color.White.copy(alpha = 0.08f), - LumaColors.accent.copy(alpha = 0.18f), + Color(0xFF46515F).copy(alpha = 0.30f), + Color.White.copy(alpha = 0.20f), + Color(0xFF202A36).copy(alpha = 0.28f), ), ) } @@ -256,23 +260,23 @@ fun Modifier.lumaFallbackGlass( Modifier.drawWithCache { val leftGlow = Brush.radialGradient( colors = listOf( - LumaColors.accent.copy(alpha = if (light) 0.14f else 0.18f), - LumaColors.accent.copy(alpha = 0.04f), + Color.White.copy(alpha = if (light) 0.26f else 0.18f), + Color.White.copy(alpha = if (light) 0.08f else 0.05f), Color.Transparent, ), - center = Offset(size.width * 0.14f, size.height * 0.18f), + center = Offset(size.width * 0.28f, size.height * 0.18f), radius = size.height * 1.25f, ) val rightGlow = Brush.radialGradient( colors = listOf( - Color.White.copy(alpha = if (light) 0.28f else 0.16f), + Color.White.copy(alpha = if (light) 0.34f else 0.18f), Color.Transparent, ), center = Offset(size.width * 0.86f, size.height * 0.22f), radius = size.height * 0.92f, ) onDrawWithContent { - drawCircle(leftGlow, center = Offset(size.width * 0.14f, size.height * 0.18f), radius = size.height * 1.25f) + drawCircle(leftGlow, center = Offset(size.width * 0.28f, size.height * 0.18f), radius = size.height * 1.25f) drawCircle(rightGlow, center = Offset(size.width * 0.86f, size.height * 0.22f), radius = size.height * 0.92f) drawContent() } diff --git a/memory/2026-08-27.md b/memory/2026-08-27.md index 2fe98cd..34363be 100644 --- a/memory/2026-08-27.md +++ b/memory/2026-08-27.md @@ -130,3 +130,9 @@ 文件变更: app/build.gradle.kts、screens/HomeScreen.kt、screens/RecordsScreen.kt、screens/SearchScreen.kt、screens/VideoPlayerScreen.kt、ui/design/LumaComponents.kt、memory/*。 教训: 启动截图需等待启动流程完成后再判断加载态;当前 API35 模拟器仍只验证安全降级玻璃,不能代替真机 Backdrop 逐帧比对。 标签: #lumaplayer #loading #skeleton #player #accessibility #build + +[PROJECT:lumaplayer] 底栏图标与资源库细节复核 +结论: 底栏普通图标调整为 36dp、搜索图标 41dp,资源库空图标改为服务器图标;搜索清除和图标库返回保留原视觉并补足 48dp 触控范围;API35 模拟器启动、设置页和语言悬浮菜单无异常。 +文件变更: screens/LibraryScreen.kt、ui/AppBottomBar.kt、ui/LiquidGlass.kt、ui/design/LumaDesignSystem.kt。 +教训: 降级玻璃必须保持独立胶囊几何,不能让菜单或选中态参与页面列表测量;本地参考素材继续排除提交。 +标签: #lumaplayer #bottom-bar #accessibility #fallback-glass #emulator #build diff --git a/memory/projects.md b/memory/projects.md index b2125f8..7a553c7 100644 --- a/memory/projects.md +++ b/memory/projects.md @@ -35,3 +35,4 @@ - 2026-08-27:底栏普通图标调整为 33dp、搜索图标 37dp;降级玻璃增加最终 Capsule 裁剪并减弱蓝色选中填充,原生路径空闲态保留轻微 Lens;详情/播放器/剧集加载和播放地址失败时回落到错误态;最终 APK 在 API 35 模拟器启动、Vision/Settings/语言菜单点击复核成功。 - 2026-08-27:收敛公共分段控件、弹出菜单、按钮、输入框及语言菜单的降级玻璃路径,移除纯色方框;补充深色主题系统栏图标同步和操作标题 48dp 点击区域。`assembleDebug`、`lintDebug`、`testDebugUnitTest` 成功,API 35 模拟器验证设置/语言/主题/关于/服务器添加链路无崩溃;本地参考素材仍未跟踪。 - 2026-08-27:播放器进度条替换为自绘拖拽控件并补充无障碍进度调节,Home/Vision/Search 的媒体加载态改为统一骨架占位;移除未使用的 Material 图标依赖。`assembleDebug`、`lintDebug`、`testDebugUnitTest` 成功。 +- 2026-08-27:底栏图标调整为 36dp、搜索图标 41dp,资源库无图标服务器使用正确的服务器图标;搜索清除与图标库返回补足 48dp 触控范围。完整 Debug/Lint/Unit 构建和 API35 模拟器回归通过。