本页面由葡萄牙语机器翻译,可能存在错误。葡萄牙语版本为准。
FAQ — 常见问题
用一两句话回答,并始终附上来源链接。要学习,请查看
learn/;要修复错误,请查看 troubleshooting/。
概述
CrossFly 是什么? 一个基于 Java、构建在 libGDX/OpenGL 之上的 UI 框架——一切都通过 GPU 绘制,不使用原生 控件,因此在所有平台上外观完全一致。(第 1 章)
我需要懂 libGDX 吗? 日常使用不需要——你只跟 Window/Component 打交道。
(第 4 章)
引导启动与生命周期
应用是如何启动的? Main 通过反射(借助类名)实例化 MainWindow。
(第 4 章)
我的 MainWindow 加载不出来。 它必须继承 Window,并具有公共无参构造函数。
(项目结构剖析)
我应该在哪里搭建 UI? 在 onShow() 中(并调用 super.onShow()),绝不要在构造函数里。
(第 7 章)
线程与渲染
我可以在其他线程操作 UI 吗? 不可以——用 Component.onUI(r) /
Main.runOnPaintThread(r) 回到主线程。(paint 线程)
我改了某些东西但界面不刷新。 渲染是按需进行的:调用 Component.repaint()(如果改变了尺寸/位置,还要
调用 setValidLayout(false))。(第 4 章 §4.6)
长耗时操作如何不卡界面? 在一个 Thread 中运行,然后用 onUI 回到主线程。
(后台工作)
布局
add() 里的数字是什么意思? LAY_FILL = -1f 填满剩余空间;LAY_AUTO = 0f = 内容大小;
>0 = 容器的比例(不是像素)。(第 12 章)
内边距和外边距? ingap(内部)和 outgap(外部),在样式中设置。
(样式化组件)
响应式 UI? 使用 Relative + LAY_FILL/LAY_AUTO,绝不用像素。
(响应式设计)
GridLayout? 先传所有宽度,再传所有组件:add(w0,w1,…,c0,c1,…)。
(GridLayout)
导航
如何在屏幕之间导航? novaWindow.show() = 入栈,hide() = 出栈(这是一个 Window 栈)。
(导航)
如何向另一个屏幕传递数据? 通过目标 Window 的构造函数——没有命名路由。
如何接收返回结果? pickers 用 picker.show(onAnswer);普通屏幕通过构造函数传入回调;
Alert 通过 buttonAction 响应。(返回值)
样式、主题与颜色
切换浅色/深色? Styles.setDarkMode(true/false) / toggleDarkMode()——会自动重新装饰一切。
(浅色/深色模式)
改变 Material/iOS 的“外观”? Skin.set(new MaterialSkin()|new IOSSkin()|new FlutterSkin())。
(Skins)
定义颜色? 从一个种子色生成一个 ColorScheme。
(配色方案)
我的颜色变得看不见了。 它是 int 类型的 ARGB 0xAARRGGBB——alpha 不带 FF 就会消失。用 0xFF…。
(第 11 章)
数据与持久化
保存简单的偏好设置? 不再有内置的 prefs(Settings.appSettings 已移除)——
请使用 SQLite 或 Device.homeFolder 中的文件。(文件与偏好设置)
使用数据库? dev.crossfly.sqlite(SqliteDb/SqliteStmt/SqliteCursor),带 SQLite3MC 加密,
在 paint 线程之外运行。(使用 SQLite 持久化)
有现成的 HTTP/同步客户端吗? 没有——用 java.net/OkHttp;JSON 用 Jackson。
(网络与 HTTP)
文本的 i18n? 框架不做翻译——只按 locale 格式化日期/数字(LocaleFormats);
翻译由你自己负责。(国际化)
大列表很慢? 使用 VirtualListView/PagedDataAdapter。
(性能与大列表)
平台与设备
在哪些平台上运行? Android、iOS、桌面(通过 LWJGL3 的 Windows/macOS/Linux)以及 Web(TeaVM)。 (平台矩阵)
相机/GPS/蓝牙/生物识别? dev.crossfly.device 包;蓝牙是 BLE/GATT 异步方式。
(第 24 章)
热敏打印机? 支持已移除——直接通过 BLE/GATT 通信。 (Bluetooth BLE)
UI 在旧设备上卡顿? 检查 Screen.slowGPU 并减少阴影/渐变/玻璃效果。
(第 8 章)
自动测试 UI? dev.crossfly.test 框架(TestCase + 截图比对)。
(测试)
Javadoc 与实际行为矛盾? 请以代码和本文档为准。 (参考文档如何组织)
另请参阅
- 权威来源:第 34 章 — FAQ ·
troubleshooting/·reference/