Pular para o conteúdo
CrossFly é 100% open sourceSiga no GitHub
CrossFlyCrossFly
Começar

FAQ — Perguntas Frequentes

Respostas em uma ou duas frases, sempre com link para a fonte. Para aprender, veja learn/; para corrigir um erro, troubleshooting/.

Geral

O que é o CrossFly? Um framework de UI em Java sobre libGDX/OpenGL — desenha tudo via GPU, sem widgets nativos, então a aparência é idêntica em toda plataforma. (Cap. 1)

Preciso saber libGDX? Não para o dia a dia — você trabalha com Window/Component. (Cap. 4)

Bootstrap e ciclo de vida

Como o app inicia? O Main instancia a MainWindow por reflexão (via classname). (Cap. 4)

Minha MainWindow não carrega. Ela precisa estender Window e ter construtor público sem-args. (Anatomia de projeto)

Onde monto a UI? Em onShow() (com super.onShow()), nunca no construtor. (Cap. 7)

Threading e renderização

Posso mexer na UI de outra thread? Não — volte com Component.onUI(r) / Main.runOnPaintThread(r). (A paint thread)

Alterei algo e a tela não atualiza. Render é sob demanda: chame Component.repaint() (e setValidLayout(false) se mudou tamanho/posição). (Cap. 4 §4.6)

Operação longa sem travar? Rode numa Thread e volte com onUI. (Trabalho em background)

Layout

O que significam os números do add()? LAY_FILL = -1f preenche a sobra; LAY_AUTO = 0f = tamanho do conteúdo; >0 = fração do contêiner (não pixels). (Cap. 12)

Padding e margem? ingap (interno) e outgap (externo), no estilo. (Estilizar componentes)

UI responsiva? Use Relative + LAY_FILL/LAY_AUTO, nunca pixels. (Responsividade)

GridLayout? Passe todas as larguras, depois todos os componentes: add(w0,w1,…,c0,c1,…). (GridLayout)

Como navego entre telas? novaWindow.show() = push, hide() = pop (é uma pilha de Window). (Navegação)

Passar dados para outra tela? Pelo construtor da Window de destino — não há rotas nomeadas.

Receber um resultado? picker.show(onAnswer) para pickers; telas comuns usam callback pelo construtor; Alert responde por buttonAction. (Retornar valores)

Estilo, tema e cores

Trocar claro/escuro? Styles.setDarkMode(true/false) / toggleDarkMode() — re-veste tudo sozinho. (Modo claro/escuro)

Mudar a “cara” Material/iOS? Skin.set(new MaterialSkin()|new IOSSkin()|new FlutterSkin()). (Skins)

Definir as cores? Gere um ColorScheme a partir de uma cor-semente. (Esquemas de cores)

Minha cor ficou invisível. É int ARGB 0xAARRGGBB — sem FF no alpha ela some. Use 0xFF…. (Cap. 11)

Dados e persistência

Salvar preferências simples? Não há mais prefs embutidas (Settings.appSettings foi removido) — use SQLite ou arquivos em Device.homeFolder. (Arquivos e preferências)

Usar banco? dev.crossfly.sqlite (SqliteDb/SqliteStmt/SqliteCursor), com cifra SQLite3MC, fora da paint thread. (Persistência com SQLite)

Tem cliente HTTP/sync pronto? Não — use java.net/OkHttp; JSON com Jackson. (Rede e HTTP)

i18n de textos? O framework não traduz — só formata datas/números por locale (LocaleFormats); a tradução é sua. (Internacionalização)

Lista grande lenta? Use VirtualListView/PagedDataAdapter. (Performance e listas grandes)

Plataformas e dispositivo

Em quais plataformas roda? Android, iOS, Desktop (Windows/macOS/Linux via LWJGL3) e Web (TeaVM). (Matriz de plataformas)

Câmera/GPS/Bluetooth/biometria? Pacote dev.crossfly.device; Bluetooth é BLE/GATT assíncrono. (Cap. 24)

Impressora térmica? Suporte removido — fale direto via BLE/GATT. (Bluetooth BLE)

UI engasga em device antigo? Cheque Screen.slowGPU e reduza sombras/gradientes/glass. (Cap. 8)

Testar a UI automaticamente? Framework dev.crossfly.test (TestCase + comparação de screenshot). (Testes)

O Javadoc contradiz o comportamento? Confie no código e nesta doc. (Como a referência é organizada)

Veja também

Esta página foi útil?