
Jetpack Compose is a modern toolkit to build native Android UI with Kotlin code, eliminating XML layouts and delivering UI and logic in a single composable.
Explore jetpack compose fundamentals from basics to state management and navigation, with mvvm patterns, coroutines, and retrofit, then build ui like profile cards, dynamic lists, and animations in kotlin.
Discover why Jetpack Compose offers a unified language for logic and UI, replaces XML, and adopts a declarative, state-driven approach that rebuilds layouts for modern Android UI.
Understand why Jetpack Compose is called compose and how composable functions build the UI through the composition pattern, replacing inheritance with has-a relationships.
Contrast the Android UI, where a button extends a text view and inherits logic. Explore Jetpack Compose, where the button is a composable function using surface and row, illustrating composition.
Install the Android Studio Canary preview to access the latest Jetpack Compose updates. Walk through downloading, unzipping, and launching the 64-bit canary build on Windows to prepare the SDK.
Explore the Jetpack Compose course teaching style and how to use project resources, including code-along practice, resource tags, zip and GitHub solutions, and importing projects in Android Studio.
Create a new Android Studio project with an empty compose activity to start a simple text compose app, then update the Kotlin compiler version and fix the text import.
Explore Kotlin basics by building a person class with a constructor, fields, and methods. Learn about variables, val, public scope, and object instantiation, plus simple print output.
Learn how to implement inheritance in Kotlin by making a final class open, overriding methods with super, and extending a person with a teacher that adds age and teaches.
Jetpack compose is built on composables, and setContent expects a composable function that can nest other composables like greeting and text to build the UI.
Explore trailing lambdas in Kotlin by examining the set content method with a default parent and a composable content. See how a greeting composable renders text in Jetpack Compose.
Learn how to use Jetpack Compose preview in Android Studio, including interactive previews and default preview composables, and ensure the preview matches the setContent content for accurate debugging.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Composables are user interface components that start with a capital letter, act as widgets rather than methods, and are decoupled and stored anywhere, including the same file as the activity.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Jetpack Compose previews let you inspect and identify composables by hovering and clicking, showing the composable you selected and the delimiters that outline each layout element.
Learn how to control a composable's size using modifier in Jetpack Compose, with width, height, size, and fill max size options, including DPI, density, and modifier order.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Explore how the order of modifiers in Jetpack Compose—width, height, clickable, and padding—shapes the interactive area and UI output of a text composable, showing that switching order changes behavior.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Explore the core Jetpack Compose UI elements by building flexible layouts with surface, alignment, and row, column, and box composables, learning to wrap content and extract reusable components.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Learn how wrap content size lets a text occupy only the space it needs inside a surface, using the wrap content size modifier on a composable.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Learn how to place multiple composables inside a surface in jetpack compose, avoid the illegal state of multiple direct children, and resolve overlapping text in previews.
Explore column, row, and box in Jetpack Compose to arrange multiple composables: create vertical layouts with column, horizontal layouts with row, and layered placements with box.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Explore how to arrange and align row children in Jetpack Compose using horizontal arrangements and vertical alignments, including center and bottom alignments, while comparing row and column behavior.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Explore the declarative paradigm shift and how Jetpack Compose handles dynamic content as a construction. Learn about the recomposition process, how to trigger composition, and the role of state.
Jetpack Compose shifts Android UI from the imperative to the declarative, enforcing unidirectional data flow: data moves top-down through composables, while events bubble bottom-up to trigger UI redraws.
Jetpack compose centers on dynamic content, letting a composable produce different outputs as input parameters change, demonstrated by a square rendered by a surface composable with red or magenta colors.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Master state management in Jetpack Compose, covering recomposition, lifting state up for lists and text fields, and introducing ViewModel and LiveData for best practice state handling.
Recomposition redraws the screen when inputs change. State for composables drives a unidirectional UI update loop that passes state via observable state holders, boosting testability and UI consistency.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Explore how the ViewModel prepares and manages UI state for fragments and activities, decoupling presentation from the view, and how lifecycle-aware LiveData observes and notifies state updates.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Build a profile card layout in Jetpack Compose with material theme, scaffold and app bar, online status indicators, data model for multiple users, and customizable colors, shapes, elevations, and typography.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Learn to theme Android apps with Jetpack Compose by deriving custom themes from Material Theme, overriding colors, typography, and shapes, and applying them via a theme wrapper around your content.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Learn to add multiple user cards in a Jetpack Compose layout by stacking profile cards in a column, adjust padding, and replace hardcoded values with dynamic parameters.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Display lists of profile cards with images from image URLs, showing online and offline statuses using LazyColumn. Learn asynchronous image loading with Coil to load URLs and render dummy profiles.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the dummy users file from the the downloadable resource of this lecture.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Learn to navigate between screens in Jetpack Compose using a navigation graph and backstack, pass arguments, and implement back functionality, while updating Android Studio and Gradle.
Explore how Jetpack navigation orchestrates transitions between composables in a single activity, using a navigation graph and navigation stack to manage destinations and back navigation.
You can download the dummy users file from the the downloadable resource of this lecture.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the dummy users file from the the downloadable resource of this lecture.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the dummy users file from the the downloadable resource of this lecture.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the dummy users file from the the downloadable resource of this lecture.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
You can download the dummy users file from the the downloadable resource of this lecture.
You can download the current solution state of the project from:
the downloadable resource for this lecture
the Github page of the solution for this lecture from the URL resource.
Explore Android presentation patterns mvc, mvp, and mvvm, and understand why viewmodel is central to mvvm while connecting to a meal database api, handling json data with retrofit and coroutines.
Set up a new Meals app project in Android Studio using an empty compose activity, update Gradle, Kotlin, and Compose to newer versions, and validate by running the emulator.
Explore MVC, MVP, and MVVM presentation patterns, compare their decoupling and testability, and learn how MVVM's view model promotes reuse and easier maintenance.
Explore the Mvvm pattern with the Android ViewModel, revealing the three-layer architecture (view, ViewModel, model) and how the ViewModel manages user interface state, presentation logic, and lifecycle for composable screens.
Explore MVVM in Jetpack Compose by implementing a meals categories screen with a view model and repository, connected to a composable view.
Fetch real data for a meal app from the meal database json api, learn the base url and the categories endpoint, and visualize meal categories with PNG images.
Learn how JSON serves as a data format from a web API, using objects, arrays, and nested structures to map data to Kotlin data classes for Android apps.
Model json responses with data classes and serialized names to map api fields, and structure meal items and categories for exposure via a repository and view model.
Explore Retrofit for Android networking in a Kotlin MVVM app, building a meals web service with a JSON converter and proper asynchronous calls.
This lecture teaches replacing retrofit execute with enqueue and a callback to fetch meal category responses asynchronously, updates Jetpack Compose UI with viewmodel state, remember, and lazy column, with coroutines.
Learn how to replace callbacks with Kotlin coroutines for asynchronous work using suspend functions, coroutine builders, scopes, and dispatchers. Transform functions into suspended ones and launch coroutines to handle results.
Explore how suspend functions enable asynchronous data flow within coroutines, using launch, scope management, and dispatchers to control thread usage and lifecycle, including job cancellation to prevent leaks.
Convert the meals API in Retrofit from callbacks to suspend functions using coroutines, updating the repository, view model, and activity, and fetch meals once with launch defect in Compose.
Hoist the meals state to the view model and launch a coroutine in the view model init, using a custom scope with io dispatchers to fetch meals and update state.
Extract the meals category screen into its own composable and prepare for navigation across multiple screens, using a coil-loaded image, a card layout, and typography.
Explore animations in compose, create expanding list items and size changes, compare to the old Android view system, and build collapsing toolbars with column and lazy column to master animations.
Implement expandable list items in a Jetpack Compose Android app by showing meal name and description with ellipsis, toggling expansion via a remembered state and animating height with animateContentSize.
Jetpack Compose navigation in Android with Kotlin demonstrates building a detailed meal screen, wiring composables with a view model, and using a singleton repository for consistent data.
Toggle the profile image size with a button using animate dp as state to smoothly transition between 100 dp and 200 dp, with padding and vertical alignment.
Learn to animate a circle profile image in Jetpack Compose by using an enum state to drive padding, color, size, and a border width with update transitions, including cyan color.
Implement a collapsing toolbar in Jetpack Compose by linking a column's vertical scroll state to an image size, using a min–max offset and constraining 100–200 dips with animation.
Learn to implement a collapsing toolbar with a lazy column in Jetpack Compose, using remember lazy list state and first visible item index to drive scrolling behavior.
Tired of creating Android UIs and layouts in XML? Jetpack Compose comes to the rescue!
Jetpack Compose is Android’s modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Compose allows to quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs.
While building not less than 5 Android projects with Compose, this course will teach you the following:
What Compose is, why do we need it, and how it works
The basics and fundamental concepts behind Compose like: the declarative paradigm shift, the dynamic content concept, recompostion and more!
State management in Compose
How to create complex layouts in Compose
The integrations between Compose and other Jetpack libraries: ViewModel, LiveData, and Navigation
Integration of Compose in MVVM architecture
Integrations between Jetpack Compose and other popular libraries on Android like Coroutines and Retrofit
How to theme your Compose app
Animations in Compose: from simple to complex animations effects like Collapsing Toolbar
And the best part is that this course features the 1.0.0 up-to-date stable version of Compose!
Lastly, you need no prior Android or Kotlin experience! We will learn everything from scratch!
I can't wait for you to join me in this course!
More on Compose:
Compose simplifies and accelerates UI development on Android allowing you to build modern looking apps. It allows to quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs. It follows the same Declarative paradigm approach as React Native, Flutter and SwiftUI. So this is the trend!
You can buid better apps faster with Jetpack Compose, Android’s modern toolkit for building native UI. With Jetpack Compose now past 1.0.0, it’s time to try it out for yourself!