
Embark on a project-based journey into Android development with Jetpack Compose, starting from Kotlin basics to canvas, custom graphics, gestures, layouts, variables and state, concurrency, and API calls.
Download and install Android Studio, create a new project with an empty activity, and explore the project structure—colors, themes, strings, and Gradle dependencies—using Kotlin and Material 3.
Set up your first app in Android Studio, preview composables, and customize color, typography, and layout with column and row, using imports and Alt+Enter for quick fixes.
Install and configure an emulator with device manager, create a virtual device, and run your first Jetpack Compose app to see the greeting on screen.
Master Kotlin fundamentals, including variables, constants, loops, and conditionals, to get started with Android development.
Explore Kotlin basics in a hands-on tour of variables, constants, strings, and string templates, including var vs val, print vs println, and simple string concatenation.
Iterate a list of people with a for loop, print each name and its length using Kotlin string interpolation, and apply an if to handle singular versus plural.
Explore optionals and data classes, illustrate the billion dollar error, and show how null values and optional hobbies are handled in practical examples.
Explore data types int, double, and float, with type inference, arithmetic, integer division, modulo, max/min values, and string templates.
Explore escape sequences and raw strings, including new lines, tabs, quotes, and file paths, with multi-line raw strings and the val over var guidance.
Explore for loops with inclusive and exclusive ranges, learn downward iteration and stepping, compare while and do-while loops, build sums, and guard against negative max values.
Explore the functional approach to loops with for each, map, filter, and sort. Learn lambda expressions and higher order function chaining on lists and a sample person data class.
Master the repeat loop by executing a fixed number of times without a collection or index, with examples like printing a line repeatedly.
Explore Kotlin pairs and triples, including creating and accessing pair.first and pair.second, converting to lists, and returning pairs or triples from functions.
Explore the when expression in Kotlin by handling vowels, first letters, drinking age logic, enums, and score mappings using booleans and ranges.
Learn enums with parameters and iterating over directions and colors in for loops, format rgb values to hexadecimal, and preview enum name and ordinal properties.
Explore rows, columns, and boxes in Jetpack Compose by building a composable with image, text, and shapes, using modifiers, alignment, and background for responsive layouts.
Explore clipping and shapes by building an avatar with a box, image, and circle clipping, adjusting color, opacity, border, and shadow to create a polished avatar.
Set up a new Android Studio project with an empty activity to explore Jetpack Compose basics, then run and preview the app to confirm a working hello Android screen.
Create a linear gradient background in a Jetpack Compose box using brush.linearGradient, with configurable colors and alpha, and center the text for clear visibility.
Create a Jetpack Compose text showcase app, applying the material theme, surface, and column layout to display greetings for Alice, Bob, and Oscar, experimenting with typography and spacing.
Explore how text modifiers shape visuals in Jetpack Compose, including padding, background, color, typography, alignment, max lines, and ellipsis, with practical demos of modifier order and material theme typography.
Create a decorated text examples composable in Jetpack Compose using a column with padding to demonstrate underline, line-through, none, and combined decorations with italic typography.
Create a composable text with shadow and a rounded corner shape, using a name parameter and 16 dpi padding, with red background and white body large typography.
Explore clickable text in Jetpack Compose by applying a modifier, using a mutable state to toggle background color between red and blue with alpha, and adding a border.
Add vertical scroll to the my app composable using the vertical scroll modifier and scroll state, then duplicate composables in the column and test in interactive mode to verify scrolling.
Learn how to implement gradient text in Jetpack Compose by creating a gradientText composable, applying a brush linear gradient with red, magenta, and yellow, and adjusting font size and weight.
Create shadow and blur text in Jetpack Compose, make it clickable, and animate the blur radius from 6 to 20 using mutable state, a gray shadow, and 24sp font.
Learn to build an annotated string in Jetpack Compose by appending text with span styles, colors, decoration, font size, emoji, and material typography for rich, customizable greetings.
Explore Kotlin classes by creating a new project with an empty activity and a composable class demo built with Jetpack Compose, featuring simple inputs, outputs, and a live preview.
Introduce the circle class with a radius property, private access, and methods to set, get, and compute circumference; prepare to add area and diameter.
Create a circle properties screen in jetpack compose that links a circle model to a radius slider, displaying radius, diameter, circumference, and area.
Learn how to add a circle in jetpack compose by using spacer, modifiers for height and size, a blue background, and horizontal centering to create a centered circular shape.
Learn how data classes simplify product modeling with auto generated equals, copy, and toString, including destructuring, and see a lazy column display of stock-aware product lists.
Explore enum classes in Jetpack Compose by building a direction enum with north, east, south, and west, tracking the current direction with remember and mutable state, and updating via buttons.
Use enum classes to represent directions, pass a title and color into a direction class, and customize button colors with ButtonDefaults.buttonColors to set container color to direction color.
Explore sealed classes in Kotlin to model safe, compile-time known state in a Jetpack Compose UI, using a screen state with loading, success, and error variants.
Learn how to build a UI state system in Jetpack Compose with a sealed class to model loading, success, and error, driven by a view model.
Examine singleton classes in Kotlin using an object for a single global counter, highlighting a global access point and the idea of a single source of truth.
Explore abstract classes as blueprints that other classes inherit from, with concrete shapes like circles implementing area and perimeter, while leveraging Kotlin and Jetpack Compose concepts in Android development.
Explore Kotlin abstract classes with a greeting screen, an abstract message, and a concrete greet function, then implement it in a hello screen and introduce interface contracts with default methods.
Explore interfaces vs classes as a contract versus an is-a relationship. Learn how interfaces define can do behaviors, support multiple interfaces, and how abstract classes hold mutable state with initializers.
Explore inner vs nested classes in Kotlin, showing how an inner class accesses outer properties with the inner keyword, and why this approach is usually discouraged.
Explore sealed interfaces to model UI state in Android, enabling lightweight, flexible state machines. Define a singleton state and data classes for success or error, using multiple inheritance and when.
Build a mood map app that defines moods, deletes moods, and shows mood statistics bar and pie charts, with scaffolding including snack bar, top bar, and a floating action button.
Create a mood map app project with an empty activity and preview a mood map composable. Explore scaffold options like top bar, bottom bar, snackbar, and a floating action button.
Explore scaffold top bar in Jetpack Compose by configuring the top app bar with a mood map title, container color, and white text, using hex color values and color customization.
Implement a bottom bar in a scaffold with navigation bar items, icons and labels such as timeline and stats, use material icons extended, and perform a Gradle sync.
Explore navigating between timeline and stats screens in android development with jetpack compose by managing a selected tab state and using onClick with a when expression to swap composables.
Learn to add a floating action button to a scaffold in Jetpack Compose, set an onclick, define a reusable container color, and use an icon while avoiding code duplication.
Add a floating action button that toggles an emoji picker using a remember mutable state boolean to show it, and display it on click with plans for a snack bar.
Implement snackbars in a Jetpack Compose scaffold by configuring a snack bar host state and wiring it into the scaffold, then launch coroutines to show messages.
Build an emoji picker in Jetpack Compose by creating a composable with on emoji selected and on dismiss callbacks, arrange emojis into clickable rows, and preview the UI.
Create clickable emoji rows in a Jetpack Compose UI, display emojis with headline medium typography, adjust padding for readability, and pass the selected emoji to the parent on emoji selected.
Refactor emoji picking in a Jetpack Compose app by creating a reusable emoji row picker composable, parameterizing rows, and wiring on emoji selected for a flexible, maintainable user interface.
Define a mood entry data class with emoji, description, and id, organize into presentation and domain packages, and add a companion object with sample moods for timeline previews and charts.
Extend mood entry by integrating a centralized emoji list and a mood values map from one to five to drive a mood bar chart.
Create a mood message generator that maps emoji moods (1 to 5) to phrases using a when expression, then randomizes from a predefined list to return a single string.
Implement a timeline screen in Jetpack Compose with blur handling, mood entries management, delete actions with snackbars, and a preview setup for rapid iteration.
Implement a mood card composable that shows a mood entry with emoji and description, supports delete, and includes a preview with sample moods and emoji picker integration.
Wire the emoji picker into the main activity, create mood entries from emoji and description, manage an id counter, update the mood list, and close the picker with on dismiss.
Implements a stats screen with a canvas, counts mood emojis, computes the average mood, and plans bar and pie charts with a blur option and a default mood value.
Builds a scrollable stats screen in Jetpack Compose, previewing mood stats with an average mood and bar and pie charts.
Build a mood bar chart in Jetpack Compose by iterating emojis, calculating bar width from counts, using modulo colors, and displaying emoji with counts and typography.
On the stats screen, implement a mood pie chart using Canvas in Jetpack Compose, calculating the total values and drawing colored arcs with proper start and sweep angles.
Create a bottom tab with an enum class, replacing integer indexes to improve readability and generality. Add new tabs like settings easily and handle exhaustive when cases.
Replace the fragile id counter with a uuid-based unique id, remove manual ids, and improve mood entry handling for cleaner, more reliable code.
Begin by introducing a view to practice layouts, lists, and value toggling in Jetpack Compose. Foster familiarity with UI in Jetpack Compose before building a full app.
Create a new Android project with an empty activity named avatar list demo, verify preview, and implement a crew roster screen as a composable with optional avatar, name, and mission.
Import four user images from the Resources drawable folder by dragging them into the drawable directory and refactoring them for use in this section.
Create a crew info composable in jetpack compose, displaying commander nova and the lunar frontier mission in styled text, using material theme typography and spacing for a clean preview.
Engage in coding exercises that pair user interfaces with algorithms, covering visibility, divisors, lists, navigation, counting letters, filled or empty rectangles, sums of powers and squares, and alphabetizing number names.
Create a new Android Studio project with an empty activity, verify the build, and run the app to display the Hello Android greeting. Next, begin a divisibility by seven exercise.
Solve a differential equation with initial condition y(0) = -1, deriving the explicit solution and its limit as x approaches infinity, showing the long-run value equals 1.
Create a Jetpack Compose UI that accepts a number input, validates it, and shows whether it is divisible by seven, using stateful text fields, a button, and a gradient background.
Implement a divisible-by-d function returning 'I am N and I'm divisible by d' or 'not divisible', and a range-divisible-by-d function producing a list for min to max-1.
Develop Kotlin logic functions to determine divisibility by a given divisor, handle division by zero, and return a range-based list of results for values from min to max, excluding max.
Build a Divisible by D composable with min and max input fields and a results list, using remember state and a vertical gradient background for a clean UI.
Arrange two outline fields in a row with equal weight and spacing; validate numeric input and min/max, compute a range divisible by d, and show results in a scrollable list.
Deep Dive Android Development using Jetpack Compose is a comprehensive, project-based course designed to take you from beginner to advanced Android developer using the latest Jetpack Compose framework. This course focuses on building practical, real-world applications, giving you the skills and confidence to create modern, responsive, and feature-rich Android apps.
Throughout the course, you’ll learn how to design layouts, manage variables and state, implement gestures, and add animations that make your apps feel dynamic and interactive. We dive into Canvas for custom graphics and UI, explore API calls to fetch and display data, efficiently load images using COIL, and integrate persistent storage with Room Database. You’ll also learn how to handle concurrency in your apps to ensure smooth performance and responsive user experiences.
You’ll master dependency injection with Koin, gaining an understanding of how to structure apps for scalability and maintainability. Advanced topics like maps integration, handling complex navigation flows, and working with live data streams are included to ensure your apps meet real-world requirements.
This course is continually updated, so you’ll have access to new topics and best practices as Jetpack Compose evolves. Each lecture is hands-on and project-focused, allowing you to immediately apply what you learn while building complete Android applications.
By the end of this course, you will not only have mastered Jetpack Compose but also have a portfolio of fully functional apps demonstrating your skills. Whether you’re aiming for a professional Android development career or looking to level up your existing skills, this course equips you with the knowledge and experience to succeed.
I am always available via the course Q&A or direct messaging, so feel free to reach out.
Happy Coding!
Ron