Esta documentación está disponible en portugués. Las traducciones a otros idiomas están en camino.
Recetario
Recetas breves y directas por tarea — "cómo hacer X" en CrossFly, con el mínimo de código y enlaces para profundizar.
Patrones rápidos de interfaz — diálogos, dropdowns, hints y selección, cada receta con el código listo para copiar.
Mostrar una hoja de acciones estilo iOS en la base de la pantalla, con botones y un Cancelar.
Posicionar un sello/contador superpuesto en la esquina de otro componente con RelativeLayout.
Montar una barra de pestañas con contenido por pestaña y reaccionar al cambio de pestaña.
Montar un Component con fondo redondeado, contenido en layout y respuesta al toque.
Usar Progress en los tres modos — icono girando, barra determinada e indeterminada.
Mostrar feedback efímero no modal que aparece y desaparece solo.
Abrir un diálogo modal de confirmación con botones Cancelar/OK y reaccionar a la elección.
Un Option solo se convierte en checkbox; varios en un Group se convierten en radio (selección exclusiva).
Abrir una lista desplegable, reaccionar a la elección y obtener el elemento seleccionado.
Máscaras de moneda, validación de campo, campos de contraseña y formularios responsivos en las cuatro plataformas.
Elegir entre teclado numérico nativo, Keypad integrado o calculadora.
Formatear automáticamente CPF, CEP y fechas con máscara y leer los dígitos limpios.
Campo que abre el DatePicker o TimePicker al ser tocado y formatea según el locale.
Campo con formato monetario automático, decimales y lectura del valor numérico.
Campo de contraseña enmascarado con botón de alternancia de visibilidad.
Alinear rótulos y campos en columnas proporcionales con GridLayout.
Restringir caracteres, limitar el tamaño y leer el valor limpio antes de enviar.
Listas largas sin tirones: paginación, cargar más bajo demanda y control del desplazamiento y el overscroll.
Abrir una lista como ventana modal centrada con filas personalizadas mediante ItemFactory.
Renderizar listas enormes con VirtualListView + DataAdapter reciclando views (estilo RecyclerView).
Mostrar una lista de textos y capturar la selección con ListView (SINGLE o MULTIPLE).
Anexar más elementos automáticamente cuando el usuario llega cerca del final de la lista virtual.
Cargar páginas bajo demanda con PagedDataAdapter (caché LRU) sobre VirtualListView.
Habilitar scroll en cualquier Component con setScrollable y configurar el efecto elástico de borde.
Abrir y cerrar pantallas, pasar datos entre ellas y recibir el resultado de vuelta, con diálogos de confirmación.
Apilar (push) y desapilar (pop) pantallas con show() y hide(), montando la UI en onShow().
Encapsular push/pop de la pila del EventsProcessor en un controller propio, para navegación testeable y desacoplada.
Mostrar un Alert de confirmación con buttonAction, oscurecer el fondo y dar feedback con Hint.
Abrir una pantalla y recibir un valor de vuelta — pickers vía show(onAnswer), pantallas comunes vía callback en el constructor.
Cámara, GPS, biometría, Bluetooth, vibración y portapapeles — el hardware del dispositivo desde el mismo código Java.
Verificar disponibilidad y autenticar al usuario con huella digital, Face ID o Windows Hello.
Abrir un mapa con pin arrastrable y GPS para que el usuario confirme una coordenada (LatLon) vía LocationPicker.
Descubrir dispositivos Bluetooth, conectar y leer/recibir notificaciones de características GATT.
Grabar video (con o sin audio), definir calidad y límite de duración, y obtener la ruta del MP4.
Escanear QR/código de barras con la cámara usando BarcodePicker, o decodificar una Image con CameraBarcode.
Leer coordenadas del GPS del dispositivo con Location + retrieveGPSData(), o rastrear continuamente con GPSThread.
Capturar una foto con la cámara del dispositivo y recibir la ruta del JPEG guardado.
Pronunciar un texto en voz alta y transcribir el habla del usuario a texto, con configuración de locale/velocidad.
Feedback rápido del dispositivo — vibración, sonido de beep y copiar/pegar del portapapeles.
Cargar imágenes de la galería o la cámara, generar miniaturas y guardar sin agotar la memoria del dispositivo.
Capturar el backbuffer actual como una Image con Main.getScreenShot y guardarla.
Cargar un PNG/JPEG/GIF desde un archivo local o descargado de la red y mostrarlo con ImageView.
Agregar una imagen de fondo a cualquier Component con addBackgroundImage e ImageSize.
Redimensionar una imagen a una miniatura con resize(), eligiendo modo y calidad.
Grabar una Image en disco (archivo con timestamp) o en un OutputStream, en PNG o JPEG.
Fundido, pulso en bucle, mover componentes y transición entre pantallas con los value animators de CrossFly.
Configurar una transición (slide, fade, scale) en el WindowStyle antes de show()/hide() — CrossFly anima el cambio de pantallas automáticamente.
Animar un valor en ciclo infinito con LoopAnimation, útil para indicadores de carga y efectos de brillo.
Animar la opacidad de un componente con AlphaAnimation, aplicando el valor vía alpha() y repintando bajo demanda.
Deslizar un componente de un punto a otro con PositionAnimation (interpolación lineal en píxeles).
SQLite en la práctica: abrir la base, CRUD con parámetros, transacciones y trabajo pesado fuera del paint thread.
Abrir/crear un archivo .db con try-with-resources, usar base de datos en memoria y crear tablas.
Ejecutar consultas SQLite en un hilo de trabajo y volver a la UI con Component.onUI.
Insertar miles de filas rápido — transacción, statement reutilizado con reset() o bulkInsert nativo.
Insertar, leer, actualizar y borrar con parámetros posicionales y cursor, sin concatenar SQL.
Abrir con clave, elegir el cifrado, cambiar/quitar la clave y detectar clave incorrecta.