Android 12 & Kotlin Masterclass
Learn app development the easy way with our best-selling masterclass
Master Android and Kotlin app development from scratch with our step-by-step course.
Canel anytime!
🚀 Zero fluff programming courses
Tired of confusing tutorials? At Tutorials.EU, we offer easy-to-follow videos that mix clear theory with hands-on practice. Say goodbye to confusion and hello to effective learning.
💡 What you will learn
✅ How to build a trello clone, a quiz app, a 7-minute workout app, a weather app, a drawing app and other stunning mobile apps
✅ Basics of Kotlin programmking including variables, methods, arrays, if statements, and loops
✅ Object-oriented Kotlin programming: classes and objects, inheritance etc.
✅ Data structures such as collections, arrays and more
✅ Clean code software development and best-practices
✅ Sending and retrieving data using HTTP clients
✅ Asynchronous code and architecture
✅ Error handling and debugging
✅ Firebase and Firestore usage
✅ Third-party libraries such as GSON, Google Places, Retrofit, dexter and many more
Course Content
- Introduction to the chapter (0:58)
- Your reward awaits
- Install Android Studio on Windows (3:22)
- Install Android Studio on Mac (3:30)
- Install Android Studio on Linux
- Our first project - the ui and how to change the size of the text (9:27)
- Setting up the Emulator (9:04)
- Hello World (8:32)
- People Counter App (15:48)
- Testing The App On Your Phone (5:49)
- Outro - Setup (0:52)
- Get the most from Tutorials.EU
- Introduction to the chapter (1:28)
- Variables and difference between val and var (7:47)
- Datatypes of numbers (8:49)
- Datatypes bool, char and string (6:48)
- Code for Variables and Datatypes
- Exercise Variables And Datatypes
- Solution For The Exercise Variables And Datatypes
- String Interpolation - String Templates (3:23)
- Quiz 1: Quiz Variables And Datatypes
- Arithmetic Operators and why the type is important (8:43)
- Comparison Operators (8:35)
- Assignment, increment and decrement operators (6:35)
- Code: Operators
- If Statements (11:37)
- If Statements Part 2 (3:53)
- Note - If Statemens as Expressions
- When Expressions - Including Exercises (12:32)
- Quiz 2: If Statements and When Expressions
- Code Of If Statements And When Expressions
- Note - When Statements as Expressions
- While Loop (7:34)
- Do While Loop (3:26)
- More On While Loops (3:42)
- For Loops (5:14)
- Code: Loops
- Exercise Loops
- Solution For Exercise: Loops
- Quiz 3: Loops
- Break and Continue (4:32)
- Functions - Parameters - Arguments and Return - Exercise Included (13:18)
- Code: Functions
- Nullables In Kotlin (10:01)
- Nullables - Elvis Operator - Not Null Assertion (5:27)
- Code: Nullables
- Quiz 4: Fundamentals Kotlin
- Summary - Kotlin Fundamentals I (1:29)
- Introduction to the chapter (1:23)
- Introduction to OOP (6:04)
- Classes and Objects (4:52)
- Classes and Initializers (7:09)
- Exercise Classes and Objects
- Solution for Exercise Classes and Objects
- Scope and Shadowing (5:14)
- Member Variables - Functions And Constructors (13:07)
- Lateinit Plus Setters And Getters (10:20)
- Code- Classes
- Data Classes (8:53)
- Challenge Classes
- Solution: Challenge Classes
- Inheritance (15:16)
- Interfaces (11:14)
- Abstract Classes (6:01)
- Typecasting (7:50)
- Summary Of Classes And OOP (1:23)
- Quiz 5: Object Oriented Programming
- Introduction to the chapter (1:32)
- Overview Collections (2:19)
- Arrays (16:17)
- Lists (9:19)
- Sets and Maps (10:32)
- ArrayLists (5:48)
- Exercise ArrayLists
- Solution For Exercise: ArrayLists
- Lambda Expressions (4:36)
- Visibility Modifiers - public - private- internal - protected and the keyword op (10:54)
- Nested and Inner Classes (4:46)
- Safe Cast and Unsafe Cast Operator (5:05)
- Exception Handling With Try And Catch (15:35)
- Quiz 6: On More Fundamentals Of Kotlin
- Summary Of This Chapter (1:32)
- Useful Links Additional Info
- READ THIS please
- Introduction to the chapter (1:31)
- Setting up the UI for the age calculator and how we can adjust the looks of our (14:43)
- Adding more TextViews and understanding the difference of SP, DP and Pixels (14:44)
- Finalizing the UI of our Age Calculator App (5:05)
- Adding a DatePickerDialog and OnDateSetListener (13:22)
- Using the selected Date to display it and looking into SimpleDateFormat and Date (11:17)
- Finalizing The Age in Minutes App (10:13)
- Challenge - Age in Days
- Summary - Age in Minutes App (1:16)
- Quiz 7: Age In Minutes App
- Important note
- Introduction to the chapter (1:06)
- What You Will Build In This Chapter (5:03)
- Building the Calculator UI using LinearLayouts and layout_weight and onClick (14:36)
- Using onClick And Implementing The CLR Functionality (6:00)
- Adding The onDecimalPoint Function (5:08)
- Adding The onOperatorFunctionality Using Contains And startsWith On Strings (8:05)
- Adding Subtraction - Using Split And Substring Methods On Strings (12:59)
- Adding The Missing Operations And Finalizing The App (10:16)
- Summary Of The Calculator Chapter (1:06)
- Important note
- Introduction - Quiz App (3:02)
- Preparing The Projects Style And Manifest (7:33)
- Setting Up The UI Using Cardview And Disable The Statusbar (16:40)
- Creating The Question Model And Preparing The Questions (15:57)
- Setting Up The Question UI And Connecting The UI To The Model Part 1 (9:46)
- Setting Up The Question UI And Connecting The UI To The Model Part 2 (12:56)
- Adding The Button Functionality To The Questions Activity (20:36)
- Selecting The Right And Wrong Answers And Displaying The Next Question (16:30)
- DEMO - StartActivityForResult (19:23)
- Preparing The UI For The Result Activity (6:42)
- Final Touches And Sending Data Via Intent - putExtra (15:09)
- Generate a Signed APK in Android Studio and upload it on Google Play Store
- Summary - Quiz App (1:37)
- Important note
- Introduction - Kids Drawing App (3:00)
- What You Will Build In This Chapter (1:34)
- Setting Up The Kids Drawing App - Drawing View Part 1 (19:15)
- Setting Up The Kids Drawing App - Drawing View Part 2 (19:17)
- Let The Lines Persist On The View (3:52)
- Adding A Little Border Around The Canvas (3:10)
- Preparing The BrushSizeSelector And How To Use DisplayMetrics (5:32)
- Selecting The Brush Size From A Custom Dialog That We Created (21:03)
- Adding The Color Pallet Using Custom Drawables That We Created (19:01)
- Adding The Color Selection (14:34)
- Adding The Background Image (9:33)
- Adding The Gallery ImageButton To The UI (5:27)
- Side Note
- Permissions Demo (23:46)
- Snackbar - AlertDialog - CustomDialogs Demo Part 1 (8:23)
- CustomDialogs Demo Part 2 (5:48)
- Custom Progress Bar Dialogs (6:08)
- Adding Permissionrequest To Our KidsDrawing App (15:24)
- Selecting An Image From The Gallery Using It As A Background (10:16)
- Adding An Undo Button And Functionality (5:31)
- AsyncTask Demo - Do Something In The Background (8:36)
- Adding A Provider - Path And An Image Sandwitch Maker (13:49)
- Saving An Image On The Phone Using AsingTask and OutputStream (16:28)
- Displaying The Custom Progress Dialog And onPreExecute (4:57)
- Adding A Share Feature To Share The Image Via E-Mail - Whatsapp etc. (8:19)
- Introduction to the chapter (2:20)
- Important Note
- Structure of the App (1:52)
- Setting up the UI (20:37)
- How To Get Rid Of The Actionbar (1:27)
- Adding The Exercise Screen - Intents And Customizing Our Toolbar (12:50)
- Implementing Custom UI Elements For A Progressbar to Tick Counterclock Wise (14:02)
- DEMO Timers (7:24)
- Using CountDownTimers To Display The Seconds Remaining (11:05)
- Challenge - Implementing The ExerciseTimer (14:18)
- Adding The Model, Our Constants For The Exercises And Testing It Part 1 (14:36)
- Adding The Model, Our Constants For The Exercises And Testing It Part 2 (12:31)
- Adding The Upcoming Exercise Text To The RestView (6:33)
- DEMO Text To Speech (8:26)
- Challenge - Add Text To Speech
- Adding Text To Speech To Our App (15:24)
- Adding A Media Player To Play A Sound Once The Exercise Is Over (6:17)
- Intro - RecyclerView (9:04)
- DEMO - RecyclerView (22:22)
- Preparing The RecyclerView For The Bottom To Display Exercise Numbers (6:28)
- Creating Our Own Custom RecyclerViewAdapter And ViewHolder (11:14)
- Displaying The RecyclerView With The Exercise Numbers (13:45)
- Displaying At Which Exercise We Currently Are (11:48)
- Creating The Finish Activity (18:41)
- Setting Up The CustomDialog For The BackButton (10:49)
- Preparing The BMI Screen (8:39)
- BMI Screen For The Metric System (20:32)
- Adding Custom RadioGroups With Custom RadioButtons (9:00)
- Adding The US View Elements (18:19)
- Difference Between View Gone And View Invisible (2:11)
- Finalizing The BMI Calculator With The US System (7:49)
- Adding The History UI And Activity (8:59)
- SQLITE Demo Part 1 - Overview Of The Project And UI (10:53)
- SQLITE DEMO Part 2 - Primary Key, How To Create a Table And Datatypes in SQLite (14:46)
- SQLITE DEMO Part 3 - The Database Class - How Tables Work - CRUD Operations etc. (16:41)
- SQLITE DEMO Part 4 - Checking the SQL Database on the Deveice Outside Of the App (18:57)
- Adding The SqliteOpenHelper And Storing Date In The DB (14:20)
- Reading The Database Entries And Preparing The Listview Item Layout (11:24)
- Adding The RecyclerView And Finishing The App (15:24)
- Summary - 7 Minutes Workout App (2:20)
- Intro Age in Minutes Calculator - Android 12 (1:31)
- Setting up the UI for the age calculator (18:49)
- Adding more TextViews and Understanding SP, DP and Pixels (14:22)
- Finalizing the UI of our Age Calculator App (6:44)
- Adding a DatePickerDialog and OnDateSetListener (13:15)
- Using the selected Date to display it and looking into simpledateformat and date (12:00)
- Finalizing The Age In Minutes App (12:19)
- Summary Age In Minutes App (1:16)
- Intro Calculator App (1:06)
- What you will build in this chapter (5:03)
- Building The Calculator UI using Linear Layouts part 1 (17:32)
- Building The Calculator UI using Linear Layouts part 2 (7:49)
- Using OnClick and Implementing the CLR Functionality (9:07)
- Adding the onDecimalPoint Function (5:43)
- Adding the OnOperator Functionality using Contains and StartsWith on Strings (11:58)
- Adding Subtraction - Using split and substring methods on Strings (15:15)
- Adding the Missing Operations and Finalizing the App (7:17)
- Summary Of The Calculator Chapter (1:06)
- Intro Quiz App (3:02)
- Preparing The Projects Style and Manifest (3:47)
- Setting up the ui and using cardview and disable the statusbar (17:59)
- Creating the question Model And Preparing the questions (20:11)
- Setting Up The QUestion UI ANd Connecting the UI to the model part 1 (11:42)
- Setting Up The QUestion UI ANd Connecting the UI to the model part 2 (18:30)
- Adding The button Functionality to the questions activity (23:51)
- Selecting the Right and Wrong Answer and Displaying the next question (13:06)
- TODO - Register For Activity RESULT DEMO
- Preparing the UI for the Result activity (5:48)
- Final Touches And Sending Data Via Intent - putExtra (18:01)
- Generate a Signed APK
- Summary Quiz App (1:37)
- Introduction - Kids Drawing App (3:00)
- What You Will Build In This Chapter (1:34)
- Setting Up The Kids Drawing App - Drawing View Part 1 (19:15)
- Setting Up The Kids Drawing App - Drawing View Part 2 (19:17)
- Let The Lines Persist On The View (3:52)
- Adding A Little Border Around The Canvas (3:10)
- Preparing the BrushSizeSelector and How To Use DisplayMetrics (5:54)
- Selecting the Brush Size From A Custom Dialog That we Created (19:13)
- Adding the color pallet using custom drawables that we created (17:59)
- Adding the Color selection (11:02)
- Adding the Background Image (7:09)
- Adding The Gallery ImageButton To The UI (4:05)
- Permissions Demo (22:44)
- Snackbar - AlertDialog - CustomDialogs Demo Part 1 (8:23)
- CustomDialogs Demo Part 2 (5:48)
- Custom Progress Bar Dialogs (6:08)
- Adding Permission requests to our KidsDrawing App (14:56)
- Selecting An Image from the gallery using it as a background (10:19)
- Adding an undo button and functionality (6:12)
- Do something in the Background using Coroutines (13:44)
- Adding a provider - path and a image sandwich maker to our app (13:49)
- Saving an Image on The Phone using Coroutines and OutPutStreams (18:39)
- Displaying The Custom Progress Dialog and Hiding it When done (4:57)
- Adding a Share Feature To Share The Image Via-Email - Whatsapp etc. (7:04)
- Intro to 7 Minute Workout App (2:20)
- Setting up the UI (17:08)
- Using Viewbinding and getting rid of our actionbar (7:50)
- Adding The Exercise Screen - Intents and Customizing our Toolbar (12:11)
- Implementing Custom UI Elements For A PRogressbar To Tick Counterclock wise (15:30)
- DEMO - Timers (7:24)
- Using CountDownTimers To Display The Seconds remaining (10:09)
- Adding the Exercise Timer (13:26)
- Adding the Model, Our Constants For The Exercises and Testing It Part 1 (12:22)
- Adding the Model, Our Constants For The Exercises and Testing It Part 2 (13:33)
- Adding the Upcoming Exercise Text To the restview (7:09)
- TextToSpeech Demo (11:00)
- Challenge TextToSpeech
- Adding Text to speech to our application (5:19)
- Adding a Media Player to play a sounds once an exercise is over (7:14)
- Intro to RecyclerViews (9:04)
- Viewbinding with Recyclerviews (23:39)
- Preparing The RecyclerView For The Bottom To Display Exercise Numbers (7:21)
- Creating our own custom recyclerviewadapter and viewholder (10:21)
- Displaying the Recyclerview with the Exercise Numbers (12:16)
- Displaying at witch exercise we currently are (11:30)
- Creating the finish activity (15:17)
- Setting up the CustomDialog for the Backbutton (10:09)
- Preparing the BMI Screen (8:03)
- BMI Screen for the Metric system (22:37)
- Adding Custom RadioGroups with Custom RadioButtons (7:00)
- Adding the US View Elements (16:20)
- FInalizing the BMI Calcutator with the us system (7:00)
- Adding the History UI and Activity (9:33)
- Looking at Lambdas once again (3:23)
- Room Database Demo Part 1 - Introduction to Room Database (9:27)
- Room Database Demo Part 2 - Setting up the Data Class - Room Entity (9:27)
- Room Database Demo Part 3 - The Dao Interface and the Database Class (16:36)
- Room Database Demo Part 4 - CREATE and store data (20:31)
- Room Database Demo Part 5 - Preparing the ItemAdapter with Listeners (12:43)
- Room Database Demo Part 6 - Displaying the Database entries (9:42)
- Room Database Demo Part 7 - Updating and Deleting database entries (22:17)
- Adding the Room Database to Our Workout App - Inserting Workouts (24:17)
- Fetching Data from our Database and displaying it in the log (9:26)
- Displaying the Workout History on our Recyclerview (18:21)
- Summary - 7 Minutes Workout App (1:55)
- Introduction to the chapter (1:53)
- Concept of the App (1:50)
- Setting Up The Happy Places App (14:27)
- Adding The Add HappyPlaceActivity and using dimens, string, color (15:06)
- Adding Calendar Picker And Populate Our Date Edit Text (11:23)
- Using Third Party Libraries (5:15)
- Using The Third Party Library DEXTER For Permission Handling (19:47)
- DEMO - Taking Images With The Camera App and Using It In Our App (12:49)
- Adding The Gallery Picking Functionality (9:09)
- Adding Camera Picking Functionality (5:30)
- Storing The Images On The Device (11:36)
- Preparing The Database Handler And Creating Our Happy Place Model (13:33)
- Saving A Happy Place Via SQLite (7:59)
- Reading The Data From Our Local DB (11:52)
- Preparing The RecyclerView (4:23)
- Using A Third Party Library For Nice Rounded Images (18:55)
- Adding ActivityForResult In Order To Update The List Dynamically (7:33)
- Adding An OnClickListener To RecyclerView Element - Best Practice (14:46)
- Passing Whole Objects from One Activity To Another - Serializable vs Parcalable (11:53)
- Adding Swipe To Edit Functionality using ItemTouchHelper (18:14)
- Fixing The Updating Duplication Bug (9:10)
- Adding Swipe To Delete Functionality (10:34)
- Using The Google Places API (19:02)
- Adding a Map Intent (7:34)
- Displaying A Marker On The Map And Zooming In With An Animation (16:25)
- Adding The Select Current Location Button And Permissions (11:15)
- Getting The Address From The Latitude And Longitude (21:46)
- Getting The Users Location (15:24)
- Steps to integrate AdMob in your Android App in Kotlin
- Summary - Happy Places (1:20)
- Introduction - Weather App (1:07)
- JSON And Tools - Introduction (7:48)
- DEMO - Downloading A Website And Its Text in Android (16:46)
- How Read And Use JSON Objects (10:46)
- Sending Post Requests (7:38)
- Using The GSON Library to Make Working With JSON Easier (9:32)
- Introduction To OpenWeatherMap And General Overview (8:08)
- Preparing The Project And Checking If Location Provider Is Turned On (10:02)
- Preparing Permissionrequests Using Dexter (11:47)
- Preparing the Internet Connection For RETROFIT And The API Calls (12:35)
- Preparing The Models Based On The API (11:21)
- Creating The API Call with Retrofit and Getting A Response (23:18)
- Creating A Custom Dialog And Testing Different Internet Speeds (8:20)
- Adding The UI And Setting It Up (19:41)
- Adding The Sunrise And Sunset Time (11:36)
- Changing The UI Depending On The Weather Data From The API (5:03)
- Adding A Refresh Button In The Menu (7:42)
- Storing The Data Via SharedPreferences And Preloading It (12:25)
- Summary - Weather App (2:18)
- Introduction to the chapter (3:04)
- Concept of the App (2:03)
- Setting Up The Splashscreen, Using Custom Fonts And How To Find Them (15:28)
- Setting Up The Intro Screen And Moving To It After 2 Second (12:34)
- Designing The SignUp Activity (15:51)
- Challenge - Seting Up The SignIn Activity (5:29)
- Setting Up The BaseActivity For Reuse Functions (21:22)
- Preparing The Signup Feature in Firebase And In The App (12:51)
- Registering The User Via Email in Firebase (11:59)
- Signing In The User (13:04)
- Using The FireStore Database to Store The User Details Part 1 (12:46)
- Using The FireStore Database to Store The User Details Part 2 (12:15)
- Signing In And Getting The User Data (7:43)
- Auto Login (5:33)
- Preparing The XML For The Drawer And Navigation Part 1 (14:33)
- Preparing The XML For The Drawer And Navigation Part 2 (14:08)
- Adding The Drawer Functionality In Code (13:02)
- Loading The Image And Username To Display It In The Drawer (13:18)
- Preparing The Profile Screen (12:39)
- Populating The Profile Activity With User Data (7:48)
- Image Chooser For The Profile Image (16:56)
- Uploading An Image To Storage (19:06)
- Updating the User Data Via HashMap In The FireStore Database (17:50)
- Updating The MainActivit Profile Details via ActivityForResult (5:40)
- The Create Board Activity (9:11)
- Select A Board Image (6:45)
- Creating A Board Image (16:03)
- Creating A Board (13:30)
- Creating The Board In The Firestore Database (22:51)
- Preparing The Boards Recyclerview Adapter And UI Elements (17:54)
- Loading The Boards Into The Recyclerview (4:02)
- Updating The BoardsList After Creating A New Board (5:51)
- The TasklistActivity (16:24)
- Loading The Board in The TaskListActivity (16:08)
- Preparing The Tasklist Adapter (21:47)
- Creating Lists Inside A Board (16:29)
- Creating A List Inside A Board Part 2 (12:18)
- Editing And Deleting Lists (14:39)
- Adding The Cards To Lists (20:51)
- Displaying The Cards (9:23)
- Preparing The MembersActivity (7:32)
- Creating The Member Item And The Toolbar (8:33)
- Fetching And Displaying The Members Of A Board (15:42)
- Adding New Members - UI (12:21)
- Adding A New Member To A Board - Logic (22:29)
- Reloading The Board Details On Change (10:59)
- Adding A Detail Screen For Cards (15:47)
- Loading Card Details To Set The Title Of The Card (11:34)
- Adding The Delete Card Menu Icon ANd Populating The EditText Of The Card (8:17)
- Deleting Cards (18:45)
- Preparing The Cards Color Dialog And Adapter (24:18)
- Selecting The Color And Updating The Card (8:53)
- Adding Colors To Our Cards (6:15)
- Passing The Memberslist To The Card (8:52)
- Preparing And Displaying The Card Members Dialog (23:14)
- Prepare The Add Members Feature (18:49)
- Finish The Add Members Feature (11:45)
- Displaying The Assigned Users Per Card On The List Level (14:00)
- Adding A Due Date To The App (10:47)
- Adding The Drag And Drop Feature (14:10)
- Preparing The Notification Feature (19:54)
- Adding The Token To The DB (14:17)
- Adding The Notifications Part 1 (27:12)
- Final Steps For The Notification Feature (13:43)
- Outro (1:42)
Canel anytime!
👨🎓 Who is this for?
✅ Anyone eager to learn Android and Kotlin to become a professional Android app developer
✅ Anyone who wants to start a developer career
✅ Aspiring developers who want to learn another technology language or stack
30-day money-back guarantee
Your satisfaction is our top priority. Enroll today and if you feel the course isn't right for you within the first 30 days, we'll give you a full refund. No questions asked. Lean back and enjoy!
Prerequisites
This course is made for beginners and developers who want to learn another programming language. Therefore you don't need any prior knowledge to start this course.
Hi, I’m Denis Panjuta
With an engineering degree, 9 years of programming, and 8 years of teaching experience, my goal is to make programming accessible for all.
Join me and let's shape the future.
Diving into Android and Kotlin development with this Masterclass was a game-changer. From basics to building apps like the Trello clone, every lesson was clear and engaging. If you want to confidently master Android development, this is your course!
Easily master Android and Kotlin with our best-selling Masterclass and become a mobile app developer.
Canel anytime!