Skip to content

优化UI页面操作方式,为用户提供更加便捷的操作 - #26

Merged
Re-BeiChen merged 3 commits into
SPlayer-Dev:devfrom
Shomi-FJS:Webview-FIX
May 25, 2026
Merged

Re-BeiChen merged 3 commits into
SPlayer-Dev:devfrom
Shomi-FJS:Webview-FIX

Conversation

@Shomi-FJS

Copy link
Copy Markdown

📌 变更类型

  • ✨ feat — 新功能
  • 🐞 fix — Bug 修复
  • 🎨 style — 仅样式 / 格式,不影响逻辑
  • ♻️ refactor — 重构,不改变外部行为
  • ⚡ perf — 性能优化
  • 📝 docs — 仅文档
  • 🧪 test — 新增 / 修改测试
  • 🔧 chore — 构建 / 脚本 / 依赖
  • 🚀 ci — 仅 CI 配置
  • ⏪ revert — 回滚

📝 变更说明

本 PR 包含三个独立但相互衔接的改进,聚焦移动端播放器体验:

1. 评论页嵌入竖屏播放器(7788731)

  • 为 PlayerComment 新增嵌入式布局,支持通过 props 控制显示与交互边界,可作为独立子页内嵌入
  • 重构 FullPlayerMobile 的多页面管理逻辑,评论 / 歌词 / 信息三个子页可自由切换
  • 根据当前子页类型动态调整手势拖拽高度与滑动响应区域,避免评论列表滚动与全屏关闭手势冲突
  • 新增评论嵌入态专属样式

2. 页面缩放体系重构(cf46ca23)

  • 把原先单一的 pageZoom 拆分为 phonePortraitPageZoom / padPageZoom 两个独立配置,手机竖屏与平板 / 横屏各自独立缩放
  • 缩放实现从 viewport meta initial-scale 改为 CSS transform + --page-zoom-* 自定义属性,移动端可独立切换缩放比而不影响布局栅格
  • 新增"安卓全面屏底部安全区优化"开关,自动注入 --android-fullscreen-safe-bottom,避免底部按钮被系统手势导航条/返回按钮遮挡
  • 弹窗/弹出层 teleport 到 body 后不会被双重缩放(把缩放容器从 body 移到 #app,弹层维持原生比例)
  • useDevice 改造为模块级单例 listener,修复 21 个组件重复 mount 时各自注册 resize / orientationchange 监听导致的内存泄漏
  • 全局 vh/vw 硬编码统一替换为 --page-zoom-100vh / --page-zoom-100vw 缩放变量,保留视觉比例
  • 设置页同步移除无 read path 的旧 pageZoom 写入分支;Settings schema 升至 18 → 19,迁移逻辑保证老用户升级后 UI 不会被等比缩到一半

3. 播放器快捷操作菜单(d6008480)

  • 新增 PlayerQuickActionsMenu 组件,集成音频频谱、动态封面、桌面歌词、逐词效果、在线 TTML、音量滑块;以及独立的 AMLL 效果分组:逐词渲染、弹簧效果、AMLL 动态背景、隐藏已播放、歌词模糊
  • 在 FullPlayerMobile 顶部信息行 & PlayerControl 控制栏(平板/桌面)分别接入,变体样式自适应
  • 新增 usePlayerMetaHold 引用计数 hold 机制 + PLAYER_META_HOLD_KEY provide/inject:popover 打开期间 acquire,关闭后 release,期间跳过 FullPlayer 的 3 秒自动隐藏定时器,避免 trigger DOM 在弹层显示期间被卸载造成 popover 浮位
  • AMLL 动态背景开关持久化记忆上次非 animation 背景类型(lastNonAnimationPlayerBg),关闭时回退到用户真正记忆中的偏好;首次激活时默认开启"背景跳动效果"(低频脉动),后续切换尊重用户偏好(amllAnimationBgEverActivated 标志位)
  • AMLL 逐词渲染开关 toggle 为 true 时弹出一次性 n-message warning:"使用此模式将增加发热与耗电"
  • AMLyric 根节点 :key 改为 ${songId}|${yrc/lrc} 复合 key:切歌仍重建保留 fade,showWordLyrics 切换时(yrc↔lrc 词数变化)也重建,规避 LyricPlayer 内部 word Animation 缓存对应不上新词数的潜在状态错乱
  • Settings schema 升至 20,新增字段 lastNonAnimationPlayerBg / amllAnimationBgEverActivated 的迁移

📱 影响范围

  • 🎵 播放引擎 / 音频
  • 📝 歌词 / 桌面歌词
  • 🔔 通知栏 / MediaSession
  • 🌐 在线音乐 (网易云 / Jellyfin / Navidrome / Emby / Subsonic / Last.fm)
  • 🧩 内置 API (nodejs-mobile)
  • 🎨 UI / 主题 / 布局
  • 📦 构建 / 打包 / 签名
  • 📱 Capacitor / 原生 Android 代码
  • 📄 文档 / README

✅ 自检清单

  • 本 PR 目标分支为 dev
  • 本地已执行 pnpm lint 且无 warning
  • 本地已执行 pnpm typecheck 且无报错
  • 已在 至少一台真机 上构建并验证关键路径
  • UI 改动已兼顾 手机竖屏 + 平板横屏 两种布局
  • 新增 / 修改的文案使用中文,与项目整体风格一致
  • 未引入不必要的依赖 / 大体积资源
  • 未修改签名密钥 / CI Secrets 相关文件

📸 截图 / 录屏 (UI 类 PR 必填)

屏幕截图 2026-05-25 092222 IMG_20260525_093906

🧪 测试方式

A. 评论页嵌入

  1. 真机/平板竖屏进入全屏播放器,顶部切到"评论",评论列表应嵌入在原全屏页内而非弹出新窗
  2. 在评论页向下拖拽:仅在列表已滚到顶时才触发关闭手势,否则正常滚动列表
  3. 切到"歌词"/"信息"页验证手势拖拽响应区与滑动区域不冲突

B. 页面缩放

  1. 设置 → 外观 → 页面缩放:手机竖屏与平板/横屏各自独立调整,互不影响
  2. 安卓真机开启"全面屏优化"开关,确认底部按钮不再被系统手势条覆盖;关闭后回到默认行为
  3. 切到 80% / 120% 缩放,打开任意 Naive UI modal / popover,弹层位置与字号保持原生比例(不被双重缩放)

💬 其他说明 (选填)

  • Settings schema 迁移:本 PR 累计升级 17 → 18 → 19 → 20,新增 4 个字段(phonePortraitPageZoom、padPageZoom、androidFullscreenSafeAreaOptimize、lastNonAnimationPlayerBg、amllAnimationBgEverActivated)。老用户升级时旧 pageZoom 强制重置为 100%(因 viewport 缩放 ≠ CSS 缩放,语义完全不同,直接迁移会让 UI 被等比缩小)
  • 快捷菜单 hold 机制:仅 FullPlayer(平板/桌面)路径 provide;FullPlayerMobile 无 autoHide 体系,inject 安全降级为 null,行为不受影响
  • AMLL :key 复合化:showWordLyrics 切换时 LyricPlayer 会重新创建,带 ~200ms idle 期空白,这是规避 word Animation 缓存对应不上新词数潜在 bug 的取舍

Shomi-FJS added 3 commits May 25, 2026 05:19
1.  为PlayerComment组件新增嵌入式布局支持,可通过props控制显示与交互
2.  重构移动端全屏播放器页面管理逻辑,支持评论/歌词/信息多页面自由切换
3.  适配不同页面类型的手势交互高度与滑动逻辑
4.  新增评论页专属样式与移动端视觉优化
- 拆分全局页面缩放为手机竖屏/平板模式独立配置
- 将缩放实现从viewport meta改为CSS transform变量控制
- 新增安卓全面屏底部安全区优化功能
- 统一使用CSS变量替代硬编码的vh/vw单位
- 修复弹窗teleport脱离缩放上下文的布局问题
- 更新设置页面适配新的缩放配置项
- 优化设备检测逻辑避免内存泄漏
- 新增PlayerQuickActionsMenu组件,集成音频频谱、动态封面等快捷开关与AMLL效果配置
- 在移动端全屏播放器与控制栏中添加快捷操作菜单入口
- 重构播放器元信息自动隐藏逻辑,支持弹层持有期间阻止控制栏隐藏
- 新增AMLL动态背景切换与记忆功能,完善设置项迁移与状态管理
- 优化歌词渲染key,根据歌曲ID与歌词类型动态更新
@Re-BeiChen
Re-BeiChen merged commit 5937f8f into SPlayer-Dev:dev May 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants