# 速查表

> 口袋参考——按布局的 add() 签名、Relative、ARGB 颜色和线程处理。

Source: https://crossfly.dev/zh/docs/reference/cheat-sheets — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# 速查表

最常见的决策，浓缩于此。所有代码片段均可对照 2026 API 编译。

## 布局 — `add()` 签名
```java
// VerticalLayout / HorizontalLayout — 先尺寸，后组件
add(LAY_FILL, comp);   // -1f → 填充剩余空间（“弹性”部分）
add(LAY_AUTO, comp);   //  0f → 内容的自然大小
add(0.2f, comp);       // >0  → 容器总尺寸的 20%

// GridLayout — 先所有宽度，后所有组件
add(0.35f, 0.65f, new Label("Nome"), new TextField(""));

// EvenlySpacedLayout — 仅组件（等间距；不设尺寸）
add(icone1); add(icone2);

// RelativeLayout — 锚点（见下方矩阵）
add(comp, RelPos.AFTER, RelPos.CENTER_OF, RelSize.AUTOSIZE, RelSize.AUTOSIZE, refComp);
```
按布局的细节：[`ui/layouts/`](/docs/ui/layouts)。

## RelativeLayout — 矩阵
```java
add(alvo, RelPos x, RelPos y, RelSize larg, RelSize alt [, Component ref] [, Gap outgap]);
```
| `RelPos`（位置） | `RelSize`（尺寸） |
|---|---|
| `START` · `CENTER` · `END` · `AFTER` · `BEFORE` | `AUTOSIZE`（内容） |
| `CENTER_OF` · `END_OF` · `SAMEPOS` | `FILL`（父级 − 边距） · `FIT`（边缘→ref） |
| `AUTOPOS` · `AUTOPOSCENTERED` · `KEEPPOS` | `SAMESIZE` · `KEEPSIZE` |

## Relative — 响应式尺寸
```java
Relative.ofFont(1.5f);                     // 1.5 × 字体高度（随 UI 缩放）
Relative.ofScreen(0.8f);                   // 屏幕的 80%
Relative.ofScreen(0.5f, ScreenSize.MIN);   // 较短边的 50%（适配 portrait/landscape）
Relative.ofPixels(24f);                    // 固定像素（例外情况才用）
```

## 颜色 — ARGB `0xAARRGGBB`
```java
int opaco     = 0xFF2196F3;                       // alpha FF = 完全可见
int invisivel = 0x002196F3;                       // ⚠️ alpha 00 → 不显示
int meio      = ColorUtils.withAlpha(0xFF2196F3, 128);  // 50% 透明
int escuro    = ColorUtils.darker(0xFF2196F3, 0.2f);
int claro     = ColorUtils.lighter(0xFF2196F3, 0.2f);
int mistura   = ColorUtils.lerpColor(corA, corB, 0.5f);
```
> **alpha 陷阱：**一个没有 alpha 字节的 `int`（`0xRRGGBB`）其 alpha 为 0 → 组件会变得
> **不可见**。要表示不透明，请始终包含 `0xFF...`。

## 线程处理 — 返回/运行
```java
Component.onUI(() -> { ... });               // 返回 paint thread（从任意线程）
Main.runOnPaintThread(() -> { ... });         // 同上，在 Component 之外
Main.runOnPaintThreadAndWait(() -> { ... });  // 同上，阻塞直到完成
comp.onActionThread(c -> { ... });            // 在后台线程中响应事件
Component.repaint();                          // 请求新帧（按需渲染）
```
原因：[paint 线程](/docs/concepts/the-paint-thread)。

## 另请参阅
- [枚举与 `UIConstants`](/docs/reference/enums-uiconstants) · [布局](/docs/ui/layouts) · 颜色（第 11 章）
