Desarrollo Android de cero a experto
Aprende Android moderno con Jetpack Compose, Kotlin Coroutines y Clean Architecture. Lecciones interactivas con editores de código y ejemplos reales.
- Nivel 1
Nivel 1: el átomo (Hello Compose)
Composable Functions
In modern Android, UI is not a separate XML file. It is a Kotlin function annotated with `@Composable`....
Comenzar nivel - Nivel 2
Nivel 2: estado e interactividad
Reactive State Management
Reactivity. When `state` changes, the UI automatically "recomposes" (redraws). We use `remember` to keep state across re...
Comenzar nivel - Nivel 3
Nivel 3: layouts y modifiers
Compose Layout System
No more nested XML layouts. We use `Column` (vertical), `Row` (horizontal), and `Box` (z-index stacking). **Modifiers** ...
Comenzar nivel - Nivel 4
Nivel 4: listas (el nuevo RecyclerView)
LazyColumn for Lists
`LazyColumn` renders only what is on screen. It replaces the complex RecyclerView + Adapter boilerplate....
Comenzar nivel - Nivel 5
Nivel 5: state hoisting (flujo de datos unidireccional)
Unidirectional Data Flow
UI components should be dumb. They receive data (`state`) and emit events (`callbacks`). They shouldn't change state the...
Comenzar nivel - Nivel 6
Nivel 6: ViewModel y Flow (arquitectura)
MVVM with StateFlow
Business logic lives in the `ViewModel`. The UI observes `StateFlow`. This survives configuration changes (rotation)....
Comenzar nivel - Nivel 7
Nivel 7: navegación moderna
Navigation Compose
Single Activity, multiple Composable destinations. Defined via a Navigation Graph....
Comenzar nivel - Nivel 8
Nivel 8: efectos secundarios
LaunchedEffect & Side Effects
Running code that isn't UI (timers, analytics, snackbars) inside Composable functions safely....
Comenzar nivel - Nivel 9
Nivel 9: stack de red completo (Retrofit + Repository)
Clean Architecture Data Layer
The "Clean Architecture" way to fetch data....
Comenzar nivel - Nivel 10
Nivel 10: inyección de dependencias (Hilt)
Hilt for DI
Automating how classes get their dependencies....
Comenzar nivel - Nivel 11
Nivel 11: coroutines en Android (concurrencia estructurada)
viewModelScope & Structured Concurrency
Long-running work (network, disk) must run off the main thread. `viewModelScope` launches coroutines that are automatica...
Comenzar nivel - Nivel 12
Nivel 12: persistencia local (Room + Flow)
Room: Entities, DAO & Reactive Queries
Room is the recommended SQLite abstraction. Define an `@Entity` (table), a `@Dao` (queries), and a `@Database`. Returnin...
Comenzar nivel - Nivel 13
Nivel 13: guardar preferencias (DataStore)
DataStore over SharedPreferences
`SharedPreferences` is synchronous and error-prone. `DataStore` is the modern replacement: it is async, transactional, a...
Comenzar nivel - Nivel 14
Nivel 14: trabajo en segundo plano (WorkManager)
WorkManager for Guaranteed Work
For work that must run even if the app closes (syncing, uploads), use `WorkManager`. It survives process death and reboo...
Comenzar nivel - Nivel 15
Nivel 15: navegación type-safe
Navigation Compose with Serializable Routes
String routes like `"profile/{userId}"` are easy to get wrong. Modern Navigation Compose lets you model destinations as ...
Comenzar nivel - Nivel 16
Nivel 16: recolección consciente del ciclo de vida
lifecycleScope & repeatOnLifecycle
Collecting a `Flow` in a coroutine that keeps running while the screen is in the background wastes resources and can cra...
Comenzar nivel - Nivel 17
Nivel 17: theming y modo oscuro (Material 3)
MaterialTheme, Color Schemes & Dynamic Color
A consistent look comes from a single `MaterialTheme`. You define a light and dark `ColorScheme`, switch based on the sy...
Comenzar nivel - Nivel 18
Nivel 18: testing (ViewModel y UI de Compose)
Coroutine Tests & Compose Test Rule
Tests lock in behavior. Unit-test `ViewModel` logic with a test dispatcher, and assert your UI with the Compose testing ...
Comenzar nivel - Nivel 19
Nivel 19: Paging 3 (scroll infinito)
PagingSource, Pager & collectAsLazyPagingItems
Loading thousands of rows at once is wasteful. Paging 3 fetches data in pages as the user scrolls, exposes load states (...
Comenzar nivel - Nivel 20
Nivel 20: animaciones en Compose
animate*AsState, AnimatedVisibility & updateTransition
Compose animates by re-targeting a value: you change a state, and a backing `Animatable` smoothly moves to the new value...
Comenzar nivel - Nivel 21
Nivel 21: dibujo personalizado con Canvas
Canvas, DrawScope & graphicsLayer
When no built-in component fits — a ring chart, a signature pad, a custom progress arc — you drop to the `Canvas` compos...
Comenzar nivel - Nivel 22
Nivel 22: permisos en tiempo de ejecución
ActivityResult API & rememberLauncherForActivityResult
Dangerous permissions (camera, location, notifications) must be requested at runtime and can be revoked anytime. The mod...
Comenzar nivel - Nivel 23
Nivel 23: rendimiento de la recomposición
Stability, derivedStateOf & key/remember
Slow Compose UIs almost always come from recomposing too much. Understanding stable types, deferring reads, and deriving...
Comenzar nivel - Nivel 24
Nivel 24: repositorio offline-first
Single Source of Truth & NetworkBoundResource
An offline-first app treats the local database as the single source of truth. The UI always reads from Room; the network...
Comenzar nivel