Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
FAQ — Preguntas Frecuentes
Respuestas en una o dos frases, siempre con enlace a la fuente. Para aprender, mira
learn/; para corregir un error, troubleshooting/.
General
¿Qué es CrossFly? Un framework de UI en Java sobre libGDX/OpenGL — dibuja todo vía GPU, sin widgets nativos, así que la apariencia es idéntica en cualquier plataforma. (Cap. 1)
¿Necesito saber libGDX? No para el día a día — trabajas con Window/Component.
(Cap. 4)
Bootstrap y ciclo de vida
¿Cómo inicia la app? El Main instancia la MainWindow por reflexión (vía classname).
(Cap. 4)
Mi MainWindow no carga. Debe extender Window y tener constructor público
sin argumentos. (Anatomía de proyecto)
¿Dónde monto la UI? En onShow() (con super.onShow()), nunca en el constructor.
(Cap. 7)
Threading y renderizado
¿Puedo tocar la UI desde otro hilo? No — vuelve con Component.onUI(r) /
Main.runOnPaintThread(r). (El paint thread)
Cambié algo y la pantalla no se actualiza. El render es bajo demanda: llama a Component.repaint() (y
setValidLayout(false) si cambió el tamaño/posición). (Cap. 4 §4.6)
¿Operación larga sin bloquear? Ejecútala en un Thread y vuelve con onUI.
(Trabajo en segundo plano)
Layout
¿Qué significan los números del add()? LAY_FILL = -1f rellena el sobrante; LAY_AUTO = 0f = tamaño
del contenido; >0 = fracción del contenedor (no píxeles). (Cap. 12)
¿Padding y margen? ingap (interno) y outgap (externo), en el estilo.
(Estilizar componentes)
¿UI responsiva? Usa Relative + LAY_FILL/LAY_AUTO, nunca píxeles.
(Responsividad)
¿GridLayout? Pasa todos los anchos, luego todos los componentes: add(w0,w1,…,c0,c1,…).
(GridLayout)
Navegación
¿Cómo navego entre pantallas? novaWindow.show() = push, hide() = pop (es una pila de Window).
(Navegación)
¿Pasar datos a otra pantalla? Por el constructor de la Window de destino — no hay rutas nombradas.
¿Recibir un resultado? picker.show(onAnswer) para pickers; las pantallas comunes usan callback por el
constructor; Alert responde por buttonAction. (Retornar valores)
Estilo, tema y colores
¿Cambiar claro/oscuro? Styles.setDarkMode(true/false) / toggleDarkMode() — re-viste todo solo.
(Modo claro/oscuro)
¿Cambiar la “cara” Material/iOS? Skin.set(new MaterialSkin()|new IOSSkin()|new FlutterSkin()).
(Skins)
¿Definir los colores? Genera un ColorScheme a partir de un color-semilla.
(Esquemas de colores)
Mi color quedó invisible. Es un int ARGB 0xAARRGGBB — sin FF en el alpha desaparece. Usa 0xFF….
(Cap. 11)
Datos y persistencia
¿Guardar preferencias simples? Ya no hay prefs integradas (Settings.appSettings fue removido) —
usa SQLite o archivos en Device.homeFolder. (Archivos y preferencias)
¿Usar base de datos? dev.crossfly.sqlite (SqliteDb/SqliteStmt/SqliteCursor), con cifrado SQLite3MC, fuera
del paint thread. (Persistencia con SQLite)
¿Hay cliente HTTP/sync listo? No — usa java.net/OkHttp; JSON con Jackson.
(Red y HTTP)
¿i18n de textos? El framework no traduce — solo formatea fechas/números por locale (LocaleFormats);
la traducción es tuya. (Internacionalización)
¿Lista grande lenta? Usa VirtualListView/PagedDataAdapter.
(Rendimiento y listas grandes)
Plataformas y dispositivo
¿En qué plataformas corre? Android, iOS, Desktop (Windows/macOS/Linux vía LWJGL3) y Web (TeaVM). (Matriz de plataformas)
¿Cámara/GPS/Bluetooth/biometría? Paquete dev.crossfly.device; Bluetooth es BLE/GATT asíncrono.
(Cap. 24)
¿Impresora térmica? Soporte removido — habla directo vía BLE/GATT. (Bluetooth BLE)
¿La UI se traba en un dispositivo antiguo? Verifica Screen.slowGPU y reduce sombras/gradientes/glass.
(Cap. 8)
¿Probar la UI automáticamente? Framework dev.crossfly.test (TestCase + comparación de screenshot).
(Pruebas)
¿El Javadoc contradice el comportamiento? Confía en el código y en esta doc. (Cómo está organizada la referencia)
Véase también
- Fuente canónica: Capítulo 34 — FAQ ·
troubleshooting/·reference/