This documentation is currently available in Portuguese. English and other languages are on the way.
Cookbook
Short, to-the-point recipes by task — "how to do X" in CrossFly, with minimal code and links to go deeper.
Quick interface patterns — dialogs, dropdowns, hints and selection, each recipe with code ready to copy.
Show an iOS-style action sheet at the bottom of the screen, with buttons and a Cancel.
Position a badge/counter overlaid on the corner of another component with RelativeLayout.
Build a tab bar with per-tab content and react to tab changes.
Build a Component with a rounded background, laid-out content and touch response.
Use Progress in its three modes — spinning icon, determinate bar and indeterminate.
Show ephemeral, non-modal feedback that appears and disappears on its own.
Open a modal confirmation dialog with Cancel/OK buttons and react to the choice.
A lone Option becomes a checkbox; several in a Group become a radio (exclusive selection).
Open a drop-down list, react to the choice, and get the selected item.
Currency masks, field validation, password fields and responsive forms across the four platforms.
Choose between the native numeric keyboard, the built-in Keypad, or the calculator.
Automatically format CPF, ZIP codes, and dates with a mask and read back the clean digits.
A field that opens the DatePicker or TimePicker when tapped and formats by the locale.
A field with automatic monetary formatting, decimal places, and reading of the numeric value.
A masked password field with a visibility toggle button.
Align labels and fields in proportional columns with GridLayout.
Restrict characters, limit length, and read the clean value before submitting.
Long lists without stutter: pagination, load-more on demand and control over scrolling and overscroll.
Open a list as a centered modal window with custom rows via ItemFactory.
Render huge lists with VirtualListView + DataAdapter recycling views (RecyclerView style).
Display a list of texts and capture the selection with ListView (SINGLE or MULTIPLE).
Automatically append more items when the user reaches near the end of the virtual list.
Load pages on demand with PagedDataAdapter (LRU cache) over VirtualListView.
Enable scrolling on any Component with setScrollable and configure the elastic edge effect.
Opening and closing screens, passing data between them and getting a result back, confirmation dialogs included.
Push and pop screens with show() and hide(), building the UI in onShow().
Encapsulate push/pop of the EventsProcessor stack in your own controller, for testable and decoupled navigation.
Show a confirmation Alert with buttonAction, dim the background, and give feedback with Hint.
Open a screen and receive a value back — pickers via show(onAnswer), regular screens via a constructor callback.
Camera, GPS, biometrics, Bluetooth, vibration and clipboard — the device hardware from the same Java code.
Check availability and authenticate the user with fingerprint, Face ID, or Windows Hello.
Open a map with a draggable pin and GPS for the user to confirm a coordinate (LatLon) via LocationPicker.
Discover Bluetooth devices, connect, and read/receive notifications from GATT characteristics.
Record video (with or without audio), set quality and duration limit, and get the MP4 path.
Scan a QR/barcode with the camera using BarcodePicker, or decode an Image with CameraBarcode.
Read the device GPS coordinates with Location + retrieveGPSData(), or track continuously with GPSThread.
Capture a photo with the device camera and receive the path of the saved JPEG.
Speak a text aloud and transcribe the user's speech into text, with locale/speed configuration.
Quick device feedback — vibration, beep sound and copy/paste from the clipboard.
Loading images from the gallery or the camera, generating thumbnails and saving without blowing the device's memory.
Capture the current backbuffer as an Image with Main.getScreenShot and save it.
Load a PNG/JPEG/GIF from a local file or downloaded from the network and display it with ImageView.
Add a background image to any Component with addBackgroundImage and ImageSize.
Resize an image to a thumbnail with resize(), choosing mode and quality.
Write an Image to disk (timestamped file) or to an OutputStream, as PNG or JPEG.
Fade, looping pulse, moving components and screen transitions with CrossFly's value animators.
Configure a transition (slide, fade, scale) on the WindowStyle before show()/hide() — CrossFly animates the screen change automatically.
Animate a value in an infinite cycle with LoopAnimation, useful for loading indicators and glow effects.
Animate a component's opacity with AlphaAnimation, applying the value via alpha() and repainting on demand.
Slide a component from one point to another with PositionAnimation (linear interpolation in pixels).
SQLite in practice: opening the database, CRUD with parameters, transactions and heavy work off the paint thread.
Open/create a .db file with try-with-resources, use an in-memory database, and create tables.
Run SQLite queries on a worker thread and return to the UI with Component.onUI.
Insert thousands of rows fast — transaction, a reused statement with reset(), or native bulkInsert.
Insert, read, update, and delete with positional parameters and a cursor, without concatenating SQL.
Open with a key, choose the cipher, change/remove the key, and detect a wrong key.