每一种颜色和尺寸都放在 Theme 的 GoHud 类型下,按名字取用。
不写死数字是铁律:换主题的时候,名字会自己跟上。
GoUi.color(GoTheme.ACCENT) # 颜色
GoUi.metric(GoTheme.GAP) # 尺寸(dp)
GoUi.font_size(GoTheme.ROLE_CAPTION) # 某个文字角色的字号
GoUi.box(GoTheme.BOX_CARD) # 一份 StyleBox 的副本
颜色
| 名字 | 用在哪里 |
|---|---|
background | 整个画面的底色 |
surface · surface_soft · surface_high | 三层面板 —— 面板、卡片、凸起的单元格 |
border | 卡片和按钮的边框 |
text · secondary · muted | 三级文字 —— 正文、辅助、弱化 |
accent · on_accent | 强调色,以及压在它上面的文字 |
success · warning · danger · info | 状态文字颜色 |
*_fill | 同样这几种状态的填充色 —— 用于状态条等大面积区域 |
scrim · shadow · track | 弹层背后的遮罩、阴影、状态条的底槽 |
*_fill 为什么要存在。 含义相同,要求却相反。warning
当文字用时必须够深,才能在浅色背景上读清;当经验条的填充用时又必须够亮,才能引起注意。
一个令牌不可能兼顾两者 —— 浅色主题的状态条曾因此变成了褐色。
没有 _fill 变体的主题会自动回退到基础名字,所以早于这些令牌的旧主题照样能用。
尺寸(dp)
touch button_height gap_tiny gap_small
gap gap_large padding padding_compact
compact_padding_x compact_padding_y
radius_small radius radius_large screen_margin
scroll_deadzone scroll_edge scrollbar_width
list_glyph icon_size notice_duration_ms
面板不透明度(%)
panel_alpha card_alpha hud_alpha notice_alpha
popup_alpha —— 容器的那张面有多实。默认是 80,所以对话框背后的游戏画面依然看得见;
popup_alpha 是 100。没有这几个令牌的主题会回退到 100,画出来和以前一模一样。
解析之后的值用 GoUi.surface_alpha(variant) 读成比例;规则都写在
不透明度 —— 面板背后的游戏这一节里。
文字角色
micro · compact · caption · body ·
button · subtitle · title —— 角色命名的是一个字号,
而不是一种用途。是“最大的那号字”,不是“标题”。这样一来,即使某个界面拿它派了别的用场,整套字号体系依然成立。
类型变体
GoPanel GoCard GoButton GoPrimaryButton
GoDangerButton GoDangerSolidButton GoBareButton GoCompactButton
GoIconButton GoListButton GoTitleLabel GoSubtitleLabel
GoCaptionLabel GoCompactLabel GoMicroLabel