Layout e o modelo Relative
O CrossFly é relativo por padrão, não absoluto. Entender isso explica por que suas telas se adaptam sozinhas a tamanhos, densidades e rotações diferentes.
O contrato de layout
Cada container delega a organização dos filhos a um Layout. O ciclo, em cascata, é sempre:
medir → posicionar → propagar onLayout para os filhos.
Quando o layout é invalidado (mudou o tamanho, o conteúdo, a rotação), o framework refaz esse ciclo a
partir da raiz. Você não recalcula posições na mão — declara a intenção e o Layout resolve.
O espectro de layouts (por intenção)
- Empilhar (vertical/horizontal) →
VerticalLayout/HorizontalLayout - Grade por fração →
GridLayout - Ancorar um componente a outro →
RelativeLayout - Espaçar uniformemente →
EvenlySpacedLayout - Posição livre →
RandomLayout
Trocar o Layout de um container muda o arranjo sem mexer nos filhos — é isso que torna a resposta à
rotação trivial. (How-to em Layouts.)
O coração conceitual: Relative
Tamanhos e posições não são pixels fixos — são relações. As quatro formas:
| Forma | Significado | Escala com |
|---|---|---|
Relative.ofFont(1.5f) |
fração da altura da fonte | o zoom/densidade da UI |
Relative.ofScreen(0.8f[, ScreenSize]) |
fração da tela | o tamanho da tela / orientação |
LAY_FILL / LAY_AUTO / fração |
fração do container | o tamanho do pai |
Relative.ofPixels(24f) |
pixel absoluto | nada (use por exceção) |
E o Gap (padding ingap / margem outgap) segue a mesma lógica: Gap.ofFont(...) escala junto.
// header (altura de conteúdo), conteúdo (absorve a sobra), footer (conteúdo) — em VerticalLayout:
tela.add(LAY_AUTO, header);
tela.add(LAY_FILL, conteudo); // o "elástico"
tela.add(LAY_AUTO, footer);
Por que isso é a base da responsividade
Se não há pixels fixos espalhados, o framework pode recalcular tudo a cada resize, rotação ou mudança de escala — e a tela simplesmente se readapta. A responsividade não é um recurso à parte: é consequência de medir por relações.
Regra de ouro: escreva tamanhos como
Relative/frações/LAY_FILL; reserveofPixelspara casos genuinamente fixos. Um pixel fixo é uma aposta de que a tela nunca muda — e ela sempre muda.
Veja também
- Aplicar: Layouts · Responsividade
- Próximo: Estilos e temas