Saltar al contenido
CrossFly es 100% open sourceSíguenos en GitHub
CrossFlyCrossFly
Empezar

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)

¿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

¿Te resultó útil esta página?