跳到内容
CrossFly 是 100% 开源在 GitHub 关注我们
CrossFlyCrossFly
开始使用

本页面由葡萄牙语机器翻译,可能存在错误。葡萄牙语版本为准。

速查表

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

布局 — add() 签名

// 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/。

RelativeLayout — 矩阵

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 — 响应式尺寸

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

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...。

线程处理 — 返回/运行

Component.onUI(() -> { ... });               // 返回 paint thread(从任意线程)
Main.runOnPaintThread(() -> { ... });         // 同上,在 Component 之外
Main.runOnPaintThreadAndWait(() -> { ... });  // 同上,阻塞直到完成
comp.onActionThread(c -> { ... });            // 在后台线程中响应事件
Component.repaint();                          // 请求新帧(按需渲染)

原因:paint 线程。

另请参阅

这个页面有帮助吗?