# FAQ — Perguntas Frequentes

> Respostas curtas às dúvidas mais comuns do CrossFly, cada uma com link para a página canônica.

Source: https://crossfly.dev/pt/docs/faq/perguntas-frequentes — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# FAQ — Perguntas Frequentes

Respostas em uma ou duas frases, sempre com link para a fonte. Para **aprender**, veja
[`learn/`](/docs/learn); para **corrigir um erro**, [`troubleshooting/`](/docs/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](/docs/get-started/project-structure))

**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](/docs/concepts/the-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](/docs/data-and-services/background-work))

## 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](/docs/ui/theming/styling-components))

**UI responsiva?** Use `Relative` + `LAY_FILL`/`LAY_AUTO`, nunca pixels.
([Responsividade](/docs/best-practices/responsividade))

**`GridLayout`?** Passe **todas as larguras, depois todos os componentes**: `add(w0,w1,…,c0,c1,…)`.
([GridLayout](/docs/ui/layouts/grid-layout))

## Navegação
**Como navego entre telas?** `novaWindow.show()` = push, `hide()` = pop (é uma **pilha de `Window`**).
([Navegação](/docs/ui/navigation/navigate-between-screens))

**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](/docs/ui/navigation/returning-results))

## Estilo, tema e cores
**Trocar claro/escuro?** `Styles.setDarkMode(true/false)` / `toggleDarkMode()` — re-veste tudo sozinho.
([Modo claro/escuro](/docs/ui/theming/dark-mode))

**Mudar a "cara" Material/iOS?** `Skin.set(new MaterialSkin()|new IOSSkin()|new FlutterSkin())`.
([Skins](/docs/ui/theming/skins))

**Definir as cores?** Gere um `ColorScheme` a partir de uma cor-semente.
([Esquemas de cores](/docs/ui/theming/color-schemes))

**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](/docs/data-and-services/files-and-preferences))

**Usar banco?** `dev.crossfly.sqlite` (`SqliteDb`/`SqliteStmt`/`SqliteCursor`), com cifra SQLite3MC, fora
da paint thread. ([Persistência com SQLite](/docs/data-and-services/storage-sqlite))

**Tem cliente HTTP/sync pronto?** **Não** — use `java.net`/OkHttp; JSON com Jackson.
([Rede e HTTP](/docs/data-and-services/networking-http))

**i18n de textos?** O framework **não** traduz — só formata datas/números por locale (`LocaleFormats`);
a tradução é sua. ([Internacionalização](/docs/best-practices/internacionalizacao))

**Lista grande lenta?** Use `VirtualListView`/`PagedDataAdapter`.
([Performance e listas grandes](/docs/best-practices/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](/docs/platforms/overview))

**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](/docs/data-and-services/device-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](/docs/best-practices/testes))

**O Javadoc contradiz o comportamento?** Confie no **código e nesta doc**.
([Como a referência é organizada](/docs/reference/overview))

## Veja também
- Fonte canônica: Capítulo 34 — FAQ · [`troubleshooting/`](/docs/troubleshooting) · [`reference/`](/docs/reference)
