Harvester 中的 goiscsi 详解:可移植 Go 语言的 iSCSI 发现与登录模块
【免费下载链接】Tyranor-Next
多引擎视觉小说(Galgame)聚合启动器,面向 Android 平台。内置 Kirikiri / ONScripter / Tyrano / Artemis / Siglus / FVP 六套引擎运行环境,并支持 Ren'Py、RPG Maker RGSS 外置 APK 引擎模块与 PSP / Nintendo Switch 外置模拟器跳转(PPSSPP / Eden),可识别和启动多类游戏,提供游戏库管理、封面获取、存档镜像、引擎参数调节等一体化体验。
Tyranor-Next 是一款面向 Android 的多引擎视觉小说(Galgame)聚合启动器,其内置的玻璃系 UI 主题在 Jetpack Compose 中实现了从玻璃拟态(Glassmorphism)到液态玻璃(Liquid Glass)的完整演进:三档外观风格(默认 / 复古玻璃 / 高级玻璃)+ 三档导航栏样式(默认 / 液态玻璃·经典 / 液态玻璃·透镜),全部即时生效、低版本自动降级。本文带你从视觉原理到 Compose 实现机制,看清这套玻璃主题是如何一层层画出来的。
外观风格与导航样式:两个正交的玻璃开关
Tyranor-Next 把「玻璃」拆成了两条互不干扰的维度:
| 维度 | 可选档位 | 持久化取值 |
|---|---|---|
| 外观风格(整窗材质) | 默认 / 复古玻璃 / 高级玻璃 | default / glass / glass_advanced |
| 导航栏样式(底部导航) | 默认 / 液态玻璃·经典 / 液态玻璃·透镜 | default / liquid_glass / liquid_glass_enhanced |
两者正交组合,意味着你可以「高级玻璃底图 + 透镜导航」或「复古玻璃 + 经典液态导航」任意搭配。档位定义收口在单一事实源 AppearanceStyle.kt 的枚举里,持久化值一旦发布永不变更,保证老用户升级后外观设置不丢失。
切换步骤:如何打开玻璃主题
进入「设置 → 应用设置」,你会看到两张下拉卡片:
- 外观风格:默认 / 复古玻璃 / 高级玻璃,切换即时全 App 生效并持久化;
- 导航栏样式:默认 / 液态玻璃·经典 / 液态玻璃·透镜(透镜档仅 Android 13+ 显示)。
值得注意的是,玻璃风格下「外观模式」与「色调切换」会被置灰禁用(背景已固定为深色画面),而「色调轮盘」保持可用——你换的主题色会实时渗入背景环境光。完整决策过程见 玻璃风格主题计划方案.md 与 高级玻璃外观风格计划方案.md。
复古玻璃:用四层渐变堆出「有颜色的暗」
复古玻璃(glass 档)刻意不做真模糊——因为它的背景本身只是一张渐变图,对纯渐变做高斯模糊视觉差异极小,却要付出整条 blur 管线开销。它的做法在 GlassStyle.kt 的 glassPageBackground 里,用 drawWithCache 一次性缓存四层 Brush 叠画:
- 三档竖向渐变:冷灰顶
#24262B→ 中灰#17191D→ 近黑#0A0B0D,比单段两点渐变多出中间过渡,观感不「闷」; - 顶部白色环境光:圆心略高于屏幕顶端的 4% 白径向光晕,只做微弱层次;
- 主题色对角环境光:右上主光斑(26% 主题色 alpha)+ 左下辅光斑(12%),让玻璃面「有颜色可透」,且随色调轮盘实时变色。
卡片与弹窗则用 80%~95% 深色半透明玻璃面(GlassSurface / GlassPanel 色板,见 Color.kt)+ 统一的 0.5dp 发丝描边 glassBorder 勾出悬浮轮廓。圆角也从默认的 8dp 跳到 32dp,由 AppShapes.kt 统一收口,避免 20 多处字面量散落。
高级玻璃:游戏封面变成整窗的模糊壁纸
高级玻璃(glass_advanced 档)才是「复刻系统级材质」的一档,核心洞察来自对参考图的拆解:模糊只做一次,卡片只是浅色磨砂膜。如果让每张卡片各自模糊背后内容,会产生 N 条 RenderEffect 管线且模糊度随位置漂移——所以高级玻璃把模糊上移到了整窗背景。
背景底图由 AmbientBackdrop.kt 生成,流程如下:
- 从游戏库取最多 6 张封面,拼成 288×432 的 2×3 马赛克小图;
- 对小图做多轮盒式模糊(
boxBlurArgb,全 API 一致、不依赖 RenderEffect)——小图模糊后放大铺满天然平滑,成本一次性、无逐帧开销; - 根背景按 cover 缩放铺满,叠 58% 黑色压暗 scrim + 四角暗角,保证白色文字可读。
卡片层在 AdvancedGlassStyle.kt 中实现三层光学装饰:
- 浅色磨砂膜:14% 白的
AdvancedGlassSurface,通透但不发白; - 上亮下暗渐变描边:20% 白渐变到 5% 白的发丝线 + 顶边高光条,模拟光源自上方掠过;
- 加色受光内描边:45° 对角白色高光用
BlendMode.Plus混合、描边加宽后裁剪到形状内侧——这正是系统导航栏那圈亮边的来源。
弹窗和抽屉是独立 window,采不到主窗口背景,方案很巧妙:从页面背景「取色」——把模糊底图按高度三等分求平均色,向深色基底压暗后生成竖向渐变,面板呈现「页面背景的磨砂版」。库内无封面时则退化为主题色软色斑,观感仍是「被模糊过的」。
液态玻璃导航:三层采样 + 折射透镜
底部导航是「液态玻璃」观感的重头戏,两档实现难度天差地别:
液态玻璃·经典(LiquidGlassNavigation.kt):基于 backdrop 库对页面内容做 vibrancy + blur 采样,呈现「看穿」的毛玻璃质感;选中项是一枚跟随手指的主题色玻璃焦点胶囊,支持长按后左右拖动切页。Android 12+ 才有实时模糊,低版本自动退回不透明实底,画面不变形。
液态玻璃·透镜(ui/common/glass/ 目录,8 个文件独立实现):Android 13+ 专属的高保真档,三层采样结构为「可见栏 / 采样副本 / 移动透镜」。它的光学细节几乎全部来自真机调校并固化在 GlassBottomBarSpec.kt 的参数契约里,几个典型取舍值得品味:
- 模糊半径从 18dp 一路收到 3dp:初版模糊太重,背景糊成一块平板「毫无玻璃感」;低模糊反而让图标边缘保留高频对比,色散才有东西可分离;
- 彩虹色散挂在整栏而非滑块:栏体又宽又矮,上下边缘是长直边,色散沿边连续铺开成一条自然彩虹带;若挂在滑块小胶囊上只会得到「异常彩虹纹」;
- 弹簧而非动画:运动控制器是「一个帧循环 + 五个自写弹簧积分器」,按压体积(78/56 倍缩放)、赴按速度(约 50–80ms 覆盖最远三槽)、抓滑块延时(110ms 轻点/按住分离)全部参数化,并有触觉反馈。
完整调校记录见 液态玻璃增强计划方案.md §6 的逐条差异清单。
性能与版本降级:为什么老设备也不卡
玻璃主题的每一个「好看」背后都有一次「要不要付出管线开销」的权衡,Tyranor-Next 的策略是把模糊尽量做一次性、把运行时开销压到零:
| 元素 | 模糊策略 | 版本要求 |
|---|---|---|
| 复古玻璃背景 | 不模糊,纯渐变 + 光晕 | 全 API |
| 高级玻璃底图 | 离线对小图盒式模糊,逐帧零开销 | 全 API |
| 高级玻璃弹窗 | 跨窗口取色渐变替代采样 | 全 API |
| 液态玻璃·经典 | backdrop 实时采样 | Android 12+(RenderEffect) |
| 液态玻璃·透镜 | 实时采样 + AGSL 折射 | Android 13+(RuntimeShader) |
透镜档还内置了 AGSL 运行期探测 + 熔断:3 个候选着色器全过才启用,任何一个失败立即回退经典档,且回退路径本身不再依赖 AGSL(见 GlassShaderSupport.kt)——避免「从一个会崩的档退回另一个会崩的档」。窗口极窄(单槽不足 24dp)时则干脆不渲染透镜档,杜绝「点不中」的伪可用状态。
所有玻璃逻辑均由 isGlass 门控,默认风格下行为与改造前逐像素一致,切回即回滚。
结语
Tyranor-Next 的玻璃系主题展示了一条成熟的 Compose 主题工程路径:视觉档位收敛为枚举(AppearanceStyle.kt)、色板与形状收口单一来源(Color.kt、AppShapes.kt)、绘制抽成可复用的 Modifier(GlassStyle.kt、AdvancedGlassStyle.kt)、参数固化为可单测的契约(GlassBottomBarSpec.kt),再叠加全 API 一致的降级设计。想要动手改造或新增自己的玻璃档位,从 theme/ 目录与这三份方案文档入手即可——它们记录了从决策、调参到实机验收修正的完整过程。
【免费下载链接】Tyranor-Next
多引擎视觉小说(Galgame)聚合启动器,面向 Android 平台。内置 Kirikiri / ONScripter / Tyrano / Artemis / Siglus / FVP 六套引擎运行环境,并支持 Ren'Py、RPG Maker RGSS 外置 APK 引擎模块与 PSP / Nintendo Switch 外置模拟器跳转(PPSSPP / Eden),可识别和启动多类游戏,提供游戏库管理、封面获取、存档镜像、引擎参数调节等一体化体验。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐





所有评论(0)