
Master Android 14 and Kotlin from setup to advanced UI with Jetpack Compose, MVVM, and Firebase, covering navigation, REST APIs, location, maps, room database, and CRUD.
Join this course to learn programming and help the instructor reach his goal of teaching 1 million people, unlocking life-changing opportunities and broader world impact.
Start from the beginning and work step by step through the Android 14 Kotlin course to build reusable code, finish exercises, and deepen understanding with downloadable, commented examples.
Kotlin updates do not affect this course; fundamentals of Kotlin and Java stay stable for beginners, with only high-level changes. Use the same Android Studio version to stay current.
Install android studio, the integrated development environment, using the hedgehog release candidate to stay in sync with the course, by downloading from the official android studio page.
Install Android Studio from the downloaded exe, accept defaults, choose install location, and finish to launch Android Studio; explore the welcome screen, customization options, plugins, and the user interface.
Set up your first Android Studio project, customize the IDE, choose a phone template, configure the package name and minimum API level (API 24), and understand Gradle preparation.
Discover how Gradle powers Android Studio by gathering UI components in build.gradle, assembling them into a working app, and performing quality checks to ensure readiness.
Adjust Android Studio's user interface using the hamburger menu, select View Appearance, then zoom to 150–175% for readability, before setting up the emulator and testing the application.
Set up an Android virtual device with the device manager, using a Pixel 7 on Android 14 (API 34), then run the app in the emulator to see Hello Android.
Edit the main activity in Kotlin, run the app on an emulator, and change the welcome text—from Hello Android to Welcome Dennis—via a greeting function.
Explore the Android Studio preview to instantly visualize the user interface without running the app, and learn to reuse code with a greeting function across main activity and previews.
Explore how imports and packages organize an Android app, including the package name, libraries, main activity setup, and Jetpack Compose, and compare Compose with XML.
On day two, learn Kotlin basics—variables, data types, if statements and when statements—while building a rock, paper, scissors game to prepare for Android app development.
Learn to build a rock paper scissors app by storing user and computer choices, using booleans for conditions, and displaying the winner with variables and basic data types.
Discover how variables act as containers for numbers, text, lists, and other data types. Learn memory allocation, descriptive naming, and how to assign, retrieve, and reuse values.
Explore the Kotlin int data types and other basic numeric types such as byte, short, and long, with type inference and explicit typing for memory and performance.
Kotlin infers numeric types from assigned values by default as int, but you can specify byte, short, or long to save storage and respect ranges such as -32,768 to 32,767.
Learn how unsigned integer types extend the positive range using u short, u int, and u long, with ranges like 0 to 255 and 0 to 65,535.
Explains the char type for a single character, uses single quotes, and demonstrates unicode escape sequences (\u00AE) to print symbols like ©, plus escaping backslashes and \t for tab.
Explore if statements and else branches with age-based conditions and comparison operators such as greater than, less than, and equal, and see how access decisions are printed.
Learn to read user input from the console with read ln, convert the string to an integer using toInt, and apply if else logic to age-based club eligibility.
Learn how to use else if and the in keyword to build multi-branch conditions in Kotlin, and see range checks like age in 18 to 39.
Create a rock paper scissors game in Kotlin for Android by initializing a project, reading player input, generating a random computer choice, and mapping 1–3 to rock, paper, or scissors.
Finalize a rock paper scissors app by presenting the winner (tie, player, or computer) with if statements, and demonstrate string concatenation and template messaging.
Explore while loops driven by dynamic user input, using readLine and == comparisons to control flow, prevent infinite loops, and re-prompt until a valid rock-paper-scissors choice is entered.
Apply parameters to the make coffee function by introducing sugar count as an int parameter, enabling customized coffees for each user.
Add a string recipient parameter to the make coffee function, show parameters with sugar counts, and print messages like coffee with one spoon for Amy and no sugar for Dennis.
Read user input for the coffee recipient name and sugar count, convert sugar to an integer, and pass it to make coffee, printing the result and prompting for more.
Create a returning Kotlin function by building an add function with two integers, declaring the return type, using return, and printing the result to practice returning values.
Explore how return types affect division results by using int and double, demonstrating truncation with integers and how to infer and convert to doubles for precise calculations.
Tackling return type limitations, the lecture introduces a coffee details object to pass data from coffee details to make coffee, and previews classes, objects, and init.
Explore the three aspects of object oriented programming by learning how to create classes as blueprints and instantiate objects, guided by the analogy of building houses.
Learn to declare a Kotlin class and create an object using a dog example, exploring constructors, initializer blocks, functions, and properties like bark that prints woof woof.
Learn how Kotlin data classes hold coffee details—name, sugar count, size, and cream amount—and how to pass a CoffeeDetails object to makeCoffee, comparing with normal classes.
Explore lists and for loops, use classes to build a simple bank account program, and complete exercises to reinforce Android app development fundamentals.
Learn how to use multi-line comments in Kotlin with slash-asterisk and asterisk-slash to comment blocks, uncomment code, and manage what runs in your main function.
Explore how indexing works in Kotlin lists, starting at zero, and use add at and remove at to modify elements at specific positions.
Learn how the contains method checks whether a list contains a specific item and returns a boolean, with examples using a shopping list and Ram.
Learn to access list items by index in a for loop by iterating from zero to shopping list size, printing each index and item.
Build a bank account program in Kotlin, define bank account class with account holder and balance, implement deposit, withdraw, and a private transaction history list to manage and display transactions.
Implement deposit and withdraw in the bank account app using Kotlin. Update the balance and record each transaction in a history list, then display all transactions with a for loop.
Finish day four by consolidating Kotlin fundamentals—variables, data types, control flow, loops, classes, objects, lists and initializers—and preview building a unit converter app using composables and Android Studio UI.
Start building Android applications with Kotlin by creating a currency converter app, and explore Jetpack Compose versus XML while testing on your phone.
Explore why Jetpack Compose replaces XML for android UI, write kotlin-based composables, and build a tangible app, contrasting declarative, efficient UI with legacy XML.
Create your own composables with the add composable keyword, use column and row layouts for text fields and options, and learn declarative UI and recomposition in a unit converter.
Learn to create and use outlined text fields in Jetpack Compose, compare text field variants, and implement onValueChange using anonymous functions to react to user input.
Compare padding modifiers and spacer elements in Jetpack Compose to space UI, weighing simplicity and reusability. Learn how density pixels (dp) ensure consistent gaps across screens.
Explore implementing a drop down menu in compose with an expanded state and menu items like centimeters, meters, feet, and millimeters, attached to two selector boxes.
Explore state and state management in Android 14 apps, learning how data interacts with the user interface through practical examples and exercises.
Master state management and events in Jetpack Compose by using remember and mutable state to persist data across recompositions and update the UI.
Learn how to manage UI state in Jetpack Compose by building a captain game that tracks treasures found and sailing direction using remember and mutable state.
Demonstrate a sailing app with a mutable state storm or treasure that updates text as you press directional buttons, showing streaks and storms, and hinting at images and hp bar.
Apply state in a unit converter using remember and mutable state to track input and output values, units, and conversion factor, with dropdowns and an outlined text field label.
Implement iExpanded for dropdown menus in Jetpack Compose, trigger expansion on input and output buttons, handle on dismiss to collapse, and update units (centimeters, meters, feet, millimeters) with conversion factors.
Implement a convert units function inside the unit converter composable that converts input to double with toDoubleOrNull, defaults to 0.0 via Elvis, applies a conversion factor, and rounds.
Change text appearance in Jetpack Compose by applying a text style to the unit converter and its result using material theme typography.
End of day six shows how state updates the UI in Kotlin, and previews next week's topics: viewmodels, Jetpack Compose, restful data sources, navigation, location, and room database.
Build a shopping list app with an add item pop-up, item quantity, and edit or delete actions, focusing on UI and lists while noting persistence comes later with room database.
Start a new android project with an empty activity, center a column, and add a clickable add item button with an onClick, then introduce a lazy column for the list.
Compare lazy column in Jetpack Compose for Android app development to an infinite bookshelf to illustrate rendering only visible items and discarding off-screen items to save memory and boost performance.
Create a lazy column beneath a button using Jetpack Compose. Define a shopping item data class with id, name, quantity, editing state, and manage items with remember and mutable state.
Move the shopping list code into a new Kotlin file and build a shopping list app composable, then integrate it into the main activity to keep it clean.
Build a composable alert dialog with a title, and a column of outlined text fields for item name and quantity, controlled by show dialog and on dismiss request.
Design a reusable shopping list item as a composable in a lazy column, passing item data and edit/delete lambdas, styled with row layout, padding, border, and rounded corners.
Finish the shopping list item row in a Kotlin Android Compose app by adding a quantity text and two icon buttons for edit and delete with click actions.
Develop a shopping item editor as a reusable composable with name and quantity text fields, an edit flow, and a save button that calls on edit complete.
Learn how the map keyword transforms lists in Kotlin with a doubling example using a shopping list app, including copy and let concepts, to prepare for building Android 14 apps.
Learn how Kotlin's let creates a confined scope to safely transform a nullable string, demonstrated by uppercasing a name without altering the original value.
Finalize the Android shopping list app by wiring edit and delete actions in a lazy column, toggling editing state and showing the shopping item editor.
Finish day seven by building a shopping list app with editable items and conditional displays, and prepare to persist data using Room and ViewModel in Jetpack Compose.
Explore mvvm architecture using a ViewModel with Jetpack Compose, by building a simple counter app that separates logic from the UI and contrasts it with the old approach.
Explore the MVVM architecture through a kingdom allegory where models supply data, views render UI, and the ViewModel coordinates events and commands into the app state.
Explore building a counter app in Jetpack Compose, compare the old approach with mvvm architecture, and learn how rotation affects state, using remember, rememberSaveable, and the ViewModel to preserve state.
Implement a counter in Android using MVVM with a view model, private mutable state, and an exposed immutable state, wired to the main activity, with increment and decrement.
Demonstrates Kotlin inheritance by defining an open base class with core values and a secondary class that inherits its functions, showing how base methods appear on derived objects.
Set up a counter model and a counter repository as the mediator in an mvvm pattern, exposing get counter and using increment and decrement to drive the view model.
Explore interfaces, override and super keywords, and inheritance, then connect data models, repositories, and viewmodels to prepare your Android recipe app for loading data via APIs.
Master android development by learning to integrate libraries in Kotlin projects, work with RESTful APIs and HTTP requests, convert JSON with Retrofit, manage viewmodels, and display remote images.
Discover how Jason Jackson's Scroll of Notation turns diverse data into a universal, simple, and compact JSON-like format using curly braces for objects and square brackets for lists across kingdoms.
Explore the free meal db json api to fetch recipes, images, and ingredients, and learn to use api keys, json structure, and search or random meal features.
Learn to model meal category data in Kotlin by creating data classes for category and a categories response, map json fields exactly, and fetch categories from the internet with Retrofit.
Learn how to use Retrofit and the suspend keyword with coroutines to fetch categories from a PHP endpoint in a Kotlin Android app, keeping the UI responsive.
Set up the main view model and recipe state, manage category data with mutable state, and fetch categories using a view model scope coroutine, handling loading and errors.
Build a recipe screen with compose, using a view model and category state to display categories in a full-size box; show a circular progress indicator on load.
Add internet permission in the Android manifest to enable loading data from the internet, configure manifest.xml, and observe how the app makes network calls and loads data.
Master fetching data from internet with suspend functions and coroutines, load images, and display content using lazy column and lazy grid in Android Kotlin, with manifest and navigation in composables.
Explore navigation in a Jetpack Compose app by building the first screen with a name field and a go to next screen button to demonstrate passing data between screens.
Set up second screen for navigation by creating a screen file, duplicating the first screen with a 24 sp welcome text, and wiring a button to return to first screen.
Set up navigation in compose with a nav controller and nav host, define the start destination and routes, and navigate between screens from the first to the second.
Pass a string name from the first screen to the second by configuring routes, nav controller, and arguments, with a default of no name when absent.
Create a category detail screen as a composable for the recipe app, showing a centered title and image with a scrollable, justified description using vertical scroll and remember scroll state.
Set up navigation in app by wiring a nav host and nav controller, and make category items clickable to pass a category object to a detail screen via higher-level callbacks.
Unlock Your Dream Career with Our Comprehensive Android Masterclass!
Dreaming of a lucrative career in Android development? Or perhaps you have a killer app idea but don't know how to bring it to life? Look no further! Whether you're a complete beginner or a programmer looking to diversify your skill set, our course is designed just for you.
Why Choose This Course?
Instructor-Led by Industry Expert: Learn from Denis Panjuta, a German engineer with 8+ years of programming and teaching experience.
All-Encompassing Curriculum: From Kotlin to Firebase, you'll gain mastery over all critical aspects of Android development.
Hands-On Experience: Our course is jam-packed with exercises, example applications, and demos to solidify your learning.
Top-of-the-Line Content:
45+ hours of HD video content
In-code step-by-step guides
Numerous practical exercises
And more!
Become Proficient in:
Kotlin and Object-Oriented Programming
Control flows and Data Structures
Networking & Asynchronous API Calls
Third-Party Libraries: GSON, Google Places, RETROFIT, and more
Device Features: Camera, Gallery, SQLite, GPS
Best Practices in Kotlin and Android Development
What Will You Build?
In Android 14:
A Unit Converter
A Shopping List APP
A GeoLocation Application
A Music Application
And still more to come!
In Android 12:
A Trello Clone
A Quiz App
A 7-Minute Workout App
A Weather App
A Drawing App
And many more!
LIMITED TIME OFFER: 30-DAY Money-Back Guarantee!
So, what's holding you back? Secure your spot today and start building a brighter future!