Morden / LiquidGlass / Normal 材质模板
在示例程序中使用
打开任意分类或任意场景,点击右上角 LiquidGlass 设置。背景开关下面新增的 材质模板 区域有三个按钮:Morden、LiquidGlass、Normal。名称与大小写按请求保留;Morden 没有改成 Modern。
模板一次设置全部八个数值,不继承上一个模板的部分值。滑杆、横向加减数值编辑器、背景模糊开关都会同步;点击后仍可手动调节,再次点相同模板可恢复这组固定参数。
| 参数 | Morden | LiquidGlass | Normal |
|---|---|---|---|
| 模糊强度 / Gaussian sigma(物理像素) | 15 | 1.5 | 0 |
| 折射强度 | 15 | 30 | 0 |
| RGB 色散 | 1 | 2 | 0 |
| 表面不透明度 | 1 | 1 | 1 |
| 边缘高光 | 1.5 | 1.5 | 1.5 |
| 模糊混合比例 | 1.00 | 1.00 | 0 |
| 材质 tint | 0.5 | 0.5 | 1 |
| 选中 tint 增量 | 0.5 | 0.5 | 1 |
Normal 的高光仍为 1.5,这是明确给定的值;没有因名称为 Normal 而额外关闭高光或修改渲染算法。Normal 将 sigma 和 blur 同时设为 0,所以背景模糊开关会关闭。
手动重新打开背景模糊时,保留原来的开关语义:恢复最后一个非零 sigma,不修改 blur 混合比例。因此从 Normal 手动开启模糊开关后,还要调高混合比例才会显示混合后的模糊;再次选择 Morden 或 LiquidGlass 会同时恢复两项。模板不会把不相关的开关操作变成隐式应用另一套参数。
保留哪些状态
只修改表中八项材质值。不会更换 Theme 对象,不改变深浅色、全局颜色、字体、字号、圆角、抗锯齿、背景网格、背景动画、控件动效或已有场景状态。
示例启动默认材质不变;首次打开设置也不自动应用模板。原有“通透”“柔和”“低反光”“恢复默认”仍保留在参数下方。模板行和旧预设行在窄窗口自动换行,使用同一 gap 和共同的尺寸计算,不挤压按钮标签或新增底板。
当前程序会在同一窗口会话内保留材质调整;关闭后不写入配置文件。本更新没有新增磁盘持久化或账号同步。
Java API
两个 JDK 目标使用相同 API:
import polaris.sdk.ui.MaterialPreset;
// 在当前 Ui 的线程中调用。
MaterialPreset.MORDEN.applyTo(ui.theme());
MaterialPreset.LIQUID_GLASS.applyTo(ui.theme());
MaterialPreset.NORMAL.applyTo(ui.theme());
applyTo(Theme) 返回传入的同一个 Theme,只写表里的八项。它不会创建窗口或触发额外背景渲染流程。
需要连正在编辑的数值框也立即刷新时,可通过当前设置面板:
settingsPanel.applyPreset(MaterialPreset.MORDEN);
GlassSettingsPanel.applyPreset 在应用参数后同步所有编辑器,并覆盖该面板里尚未提交的数字文本,避免旧文本失去焦点时把模板值写回旧值。该方法也只应在所属 UI 线程调用。
公开模板标签通过 MaterialPreset.MORDEN.displayName() 等读取。三项枚举的常量为 MORDEN、LIQUID_GLASS、NORMAL,不会用本地化翻译替换用户要求的界面名称。
完整示例
源码:examples/MaterialPresets.java。它使用现有控件和 GlassSettingsDialog,不是第二套模拟设置界面。
sh run-example.sh 8 MaterialPresets
sh run-example.sh 21 MaterialPresets
Windows 对应 run-example.cmd 8 MaterialPresets 等。
运行环境限制与其余 SDK 一致。Java 8/21 发布目标都由本次构建实际生成;Windows 原生后端未改动且仍未完成实机验证。