Receitas
Receitas curtas e diretas por tarefa — "como fazer X" no CrossFly, com o mínimo de código e links para aprofundar.
Padrões rápidos de interface — diálogos, dropdowns, hints e seleção, cada receita com o código pronto para copiar.
Exibir uma folha de ações estilo iOS na base da tela, com botões e um Cancelar.
Posicionar um selo/contador sobreposto ao canto de outro componente com RelativeLayout.
Montar uma barra de abas com conteúdo por aba e reagir à troca de aba.
Montar um Component com fundo arredondado, conteúdo em layout e resposta ao toque.
Usar Progress nos três modos — ícone girando, barra determinada e indeterminada.
Exibir feedback efêmero não-modal que aparece e some sozinho.
Abrir um diálogo modal de confirmação com botões Cancelar/OK e reagir à escolha.
Um Option sozinho vira checkbox; vários em um Group viram radio (seleção exclusiva).
Abrir uma lista suspensa, reagir à escolha e obter o item selecionado.
Máscaras de moeda, validação de campo, campo de senha e formulário responsivo nas quatro plataformas.
Escolher entre teclado numérico nativo, Keypad embutido ou calculadora.
Formatar automaticamente CPF, CEP e datas com máscara e ler os dígitos limpos.
Campo que abre o DatePicker ou TimePicker ao ser tocado e formata pelo locale.
Campo com formatação monetária automática, casas decimais e leitura do valor numérico.
Campo de senha mascarado com botão de alternância de visibilidade.
Alinhar rótulos e campos em colunas proporcionais com GridLayout.
Restringir caracteres, limitar tamanho e ler o valor limpo antes de submeter.
Listas longas sem travar: paginação, carregar mais sob demanda e controle de rolagem e overscroll.
Abrir uma lista como janela modal centralizada com linhas customizadas via ItemFactory.
Renderizar listas enormes com VirtualListView + DataAdapter reciclando views (estilo RecyclerView).
Exibir uma lista de textos e capturar a seleção com ListView (SINGLE ou MULTIPLE).
Anexar mais itens automaticamente quando o usuário chega perto do fim da lista virtual.
Carregar páginas sob demanda com PagedDataAdapter (cache LRU) sobre VirtualListView.
Habilitar scroll em qualquer Component com setScrollable e configurar o efeito elástico de borda.
Abrir e fechar telas, passar dados entre elas e receber o resultado de volta, incluindo diálogos de confirmação.
Empilhar (push) e desempilhar (pop) telas com show() e hide(), montando a UI em onShow().
Encapsular push/pop da pilha do EventsProcessor num controller próprio, para navegação testável e desacoplada.
Exibir um Alert de confirmação com buttonAction, escurecer o fundo e dar feedback com Hint.
Abrir uma tela e receber um valor de volta — pickers via show(onAnswer), telas comuns via callback no construtor.
Câmera, GPS, biometria, Bluetooth, vibração e área de transferência — o hardware do aparelho pelo mesmo código Java.
Verificar disponibilidade e autenticar o usuário com impressão digital, Face ID ou Windows Hello.
Abrir um mapa com pino arrastável e GPS para o usuário confirmar uma coordenada (LatLon) via LocationPicker.
Descobrir dispositivos Bluetooth, conectar e ler/receber notificações de características GATT.
Gravar vídeo (com ou sem áudio), definir qualidade e limite de duração, e obter o caminho do MP4.
Escanear QR/código de barras com a câmera usando BarcodePicker, ou decodificar uma Image com CameraBarcode.
Ler coordenadas do GPS do dispositivo com Location + retrieveGPSData(), ou rastrear continuamente com GPSThread.
Capturar uma foto com a câmera do dispositivo e receber o caminho do JPEG salvo.
Falar um texto em voz alta e transcrever a fala do usuário para texto, com configuração de locale/velocidade.
Feedback rápido do dispositivo — vibração, som de beep e copiar/colar do clipboard.
Carregar imagens da galeria ou da câmera, gerar miniaturas e salvar sem estourar a memória do aparelho.
Capturar o backbuffer atual como uma Image com Main.getScreenShot e salvá-la.
Carregar um PNG/JPEG/GIF de um arquivo local ou baixado da rede e exibi-lo com ImageView.
Adicionar uma imagem de fundo a qualquer Component com addBackgroundImage e ImageSize.
Redimensionar uma imagem para uma miniatura com resize(), escolhendo modo e qualidade.
Gravar uma Image em disco (arquivo com timestamp) ou em um OutputStream, em PNG ou JPEG.
Fade, pulso em loop, mover componentes e transição entre telas com os value animators do CrossFly.
Configurar uma transição (slide, fade, scale) na WindowStyle antes de show()/hide() — o CrossFly anima a troca de telas automaticamente.
Animar um valor em ciclo infinito com LoopAnimation, útil para indicadores de carregamento e efeitos de brilho.
Animar a opacidade de um componente com AlphaAnimation, aplicando o valor via alpha() e repintando sob demanda.
Deslizar um componente de um ponto a outro com PositionAnimation (interpolação linear em pixels).
SQLite na prática: abrir o banco, CRUD com parâmetros, transações e trabalho pesado fora da paint thread.
Abrir/criar um arquivo .db com try-with-resources, usar banco em memória e criar tabelas.
Rodar consultas SQLite em uma thread de trabalho e voltar à UI com Component.onUI.
Inserir milhares de linhas rápido — transação, statement reusado com reset() ou bulkInsert nativo.
Inserir, ler, atualizar e apagar com parâmetros posicionais e cursor, sem concatenar SQL.
Abrir com chave, escolher a cifra, trocar/remover a chave e detectar chave errada.