Skip to content
CrossFly is 100% open sourceFollow us on GitHub
CrossFlyCrossFly
Get started

This documentation is currently available in Portuguese. English and other languages are on the way.

Learn — CrossFly Fundamentals

Learn — CrossFly Fundamentals

A guided, sequential course that builds a complete app while teaching every CrossFly fundamental.

Tutorial🟢
The CrossFly big picture

The mental model before the code — Java+OpenGL, paint thread, everything is a Component, no imposed architecture.

Tutorial🟢
Windows and navigation

Window, onShow(), the LIFO stack (show/hide), passing data through the constructor and returning values.

Tutorial🟢
Thinking in components

Component as the base, lifecycle (onAdd/onRemove), composition, and a custom component with bind.

Tutorial🟢
Layouts

The six layouts, add(LAY_AUTO/LAY_FILL/fraction) and the technique of nesting layouts for real screens.

Tutorial🟢→🟡
Styling and themes

ComponentStyle per state, ARGB colors, Skin, and switching light/dark at runtime without recreating the UI.

Tutorial🟢→🟡
Handling input

onAction vs onActionThread, focus, TextField/TextArea and the touch/gesture handlers.

Tutorial🟡
Managing state

No reactive binding — state in fields/ViewModel, the View translates state→components by hand.

Tutorial🟡
Loading data

I/O off the paint thread (Thread + onUI) and efficient large lists with VirtualListView.

Tutorial🟡
Persisting data

SQLite (SqliteDb/SqliteCursor) behind a repository — 1-based bind, 0-based getters.

Tutorial🟡
Making it responsive

Relative, Gap, LAY_FILL, Screen.minSize as a breakpoint and onReposition() to swap the arrangement.

Tutorial🟡
Testing your app

The testing framework (TestCase), tap simulation and visual comparison via screenshot.

Tutorial🟡
Shipping

Package and run on each platform from the Gradle modules — the end of the cycle.