What you will learn in this course and how is it structured
Thanks a lot for taking the course
How to get most out of this course
Day 1 - Downloading Android Studio
Day 1 Installing Android Studio
Install Android Studio on Linux
Day 1 - Setting up our First Project
Day 1 - Overview of the Android Studio Interface
Day 1 - Understanding Gradle
Day 1 - Changing the Scaling in Android Studio
Day 1 - Setting up our Emulator
Day 1 - Changing our code for the first time
Day 1 - Understanding Preview
Day 1 - Imports and Packages
Day 1 - Understanding the MainActivity OnCreate and Composable
Let's test your initial understanding and see if you are ready for the next day!
New Feature: Learning Paths
Day 2 - Overview of what Rock Paper Scissors is build of
Day 2 - Overview of what variables are
Day 2 - Running Hello World
Day 2 - Val vs Var and print ints on the console
Coding Exercise - Understanding Variable Types and Printing in Kotlin
Day 2 - Int Long Short Byte and specifying the type manually
Coding Exercise - Demonstrate the use of floating point data types in Kotlin
Day 2 - Unsigned Integers
Day 2 - Booleans true false negation
Coding Exercise - Understanding Booleans in Kotlin
Day 2 - Char Unicode and Backslash escape character
Day 2 - If Else Statements
Day 2 - Readln and toInt to convert strings into int variables
Day 2 - Else if and the in keyword
Coding Exercise - Exploring "if-else if-else" in Kotlin
Day 2 - Rock Paper Scissors Part 1 - Getting The Computers choice
Day 2 - Rock Paper Scissors Part 2 - Finding out the winner
Day 2 - Rock Paper Scissors Part 3 - Presenting the Winner
Day 2 - While loops with counters
Day 2 - While loops with user input
Coding Exercise -String to Integer Conversion and Basic Input Handling in Kotlin
Coding Exercise - Validate Player Input in Rock-Paper-Scissors Game
Day 3 - Amy and her Coffee Function
Day 3 - Adding Sugar - Functions with Parameters
Day 3 - Quiz Challenge Solution - 1 Spoon 2 Spoons
Coding Exercise - Enhancing the Coffee Machine in Kotlin
Day 3 - Quiz Challenge Solution - Who is the coffee for
Day 3 - BONUS Quiz Challenge Solution - Who is the coffee for with user input
Day 3 - Functions that return something
Coding Exercise - User Input Arithmetic in Kotlin
Day 3 - Quiz Challenge Solution - Get User Input to Add two numbers
Day 3 - More about Return types
Day 3 - Limitations of Output - Return Types
Day 3 - Classes Story Time
Day 3 - Creating our First Class and Object
Day 3 - Understanding Constructors and Default Values
Coding Exercise -Implementing a Kotlin Class with Constructors and Default Value
Day 3 - Accessing and Changing Properties
Day 3 - Data Classes and Coffee
Day 4 - Multiline Comments
Day 4 - Listof and MutableListOf
Day 4 - Modifying specific items in a List
Day 4 - Set Method on Lists
Day 4 - Contains Method - Check if item is in the list
Coding Exercise - List Manipulation Practice in Kotlin
Day 4 - For Loops with Lists
Day 4 - Getting the Index in a for loop
Coding Exercise - Looping Through Lists in Kotlin
Day 4 - BankAccountApp - Private Keyword and Defining List Type
Day 4 - BankAccountApp - Implementing the functionality
Coding Exercise - Enhancing the BankAccount Class in Kotlin
Day 5 - XML and Jetpack Compose
Day 5 - Creating a Project and Understanding the Code with our New Knowledge
Day 5 - Creating our own Composables and Understanding Column
Day 5 - OutlinedTextField and Anonymous Functions
Coding Exercise - Implementing and Previewing Composables in Jetpack Compose
Day 5 - Button onClick and Toast
Day 5 - Box Icons and DropDownMenus
Day 5 - Modifier VerticalArrangement and HorizontalAlignment
Day 5 - Spacer vs Padding
Coding Exercise - Exploring Spacing: Padding vs Spacer in Jetpack Compose
Day 5 - Adding DropdownMenus and DropDownMenuItems
Day 6 - State - Recomposition - Remember and MutableState
Day 6 - Captains Remember States and Treasures
Coding Exercise: Enhancing the Captain Game with Additional Features
Day 6 - Challenge Solution - Storm or Treasure
Day 6 - Understanding the by keyword
Day 6 - Implementing State to our OutlinedTextField
Day 6 - Implementing iExpanded for DropdownMenu and collapse it
Day 6 - Converting and Finishing the DropDownMenu Input
Day 6 - Taking Care of the right output and Bug fixing
Day 6 - Changing the Font of our Text
DOWNLOAD SOURCE - UNIT CONVERTER
Day 7 - The Shopping List App
Day 7 - Starting with the Shopping List UI by adding a button
Day 7 - Lucy's Infinite Bookshelf and Jamies LazyColumn
Day 7 - Adding the LazyColumn and the Data Class
Day 7 - Moving our ShoppingListApp Code into a separate file
Day 7 - Understanding and setting up the AlertDialog
Day 7 - Modifying our AlertDialog and Understanding that there
Day 7 - Finishing our AlertDialog and saving the Shoppinglist item
Day 7 - Setting up how a listitem should look like
Day 7 - A little more on Lambda expressions
Day 7 - Finishing our ShoppingListItem Composable using IconButtons
Day 7 - ShoppingItemEditor
Day 7 - Finalizing the App
Understanding the Shopping List App Composable Structure
DOWNLOAD SOURCE - SHOPPING LIST APP
Day 8 - Kingdom of Appdom and The Royal Orchestra MVVM
Coding Exercise - Implement a Counter App using ViewModel in Kotlin
Day 8 - Counter App - Rotating Phone and Losing State
Day 8 - Converting Counter App with MVVM
Day 8 - Functions that didn't exist and could be called
Day 8 - Inheritance 2 - Override and Super Keywords
Day 8 - Interfaces - learning from multiple sources
Day 8 - Setting up the Model and the Repository for MVVM
Day 8 - Why MVVM and Why Repository
Day 8 - Why MVVM and Why Repository
Day 9 - The Scroll of DataVille - JSON Analogy
Day 9 - JSON - what it really stands for
Day 9 - Understanding the Structure of JSON
Understanding JSON and Data Classes in Kotlin
Day 9 - TheMealDB and how we will use it
Day 9 - Adding Dependencies for ViewModel Network Calls JSON
Day 9 - Setting up our Categories Data Classes
Day 9-Using Retrofit the Suspend Key and Coroutines to get Access to Categories
Day 9 - Try And Catch And Finally
Day 9 - Setting up Our MainViewModel and Fetching Data
Day 9 - Preparing our RecipeScreen
Day 9 - How each Category Item should look like
Day 9 - Adding Internet Permission and Running the App
Day 9 - Going through the whole flow of our application
DOWNLOAD SOURCE - MY RECIPE APP
Day 10 - Setting up First Screen for Navigation
Day 10 - Setting up The Second Screen for Navigation
Day 10 - NavHost NavController and Navigating
Coding Exercise - Add a 3rd Screen to navigate to and do so
Day 10 - Passing Variables from One Screen To Another
Coding Exercise - Pass Age as well
Day 10 - Setting up the CategoryDetailScreen for our Recipe App
Day 10 - Preparing our UI for Navigation
Day 10 - Setting up the Routes with a Sealed Class
Day 10 - Implementing the Navigation and Passing Objects
Day 10 - Serialization and Deserialization with Parcelable
Day 10 - Finishing Day 10
Day 11 - Adding Permissions for Coarse and Fine Location in the AndroidManifest
Day 11 - Checking if we have access to the location permissions
Day 11 - Story about Context
Day 11 - RememberLauncherForActivityResult - Starting the Permission request
User Interface & Location Permissions
Day 11 - Requesting for Permission and Seeing the Popup
Day 11 - Seeing Permissions under the hood in the Android Settings
Day 11 - Preparing the ViewModel for Location Loading
Day 11 - Reading the Latitude and Longitude and displaying it
Day 11 - Setting up a Route and Understanding Location on our Emulator
Day 11 - Displaying the Address based on Latitude and Longitude
Unraveling Geo-decoding: From Coordinates to Addresses
Day 11 - Finishing Day 11
Day 12 - Adding the required Dependencies to our Shopping List App
Day 12 - Setting up the API Key for Google Maps
Day 12 - Adding Geocoding API and testing our API Key
Day 12 - Restricting your API Key
Day 12 - Mapping the API Response to Data Classes
Day 12 - Prepping our LocationSelectionScreen
Day 12 - Adding GoogleMaps to LocationSelectionScreen
Day 12 - Adding the LocationViewModel
Day 12 - Reusing our LocationUtils from the previous lectures
Day 12 - Changing our ShoppingItems
Day 12 - Adding the permission request
Day 12 - Adding the GeocodingApiService
Day 12 - Finalizing Retrofit elements
Day 12 - Putting everything together and testing the app
Navigating Android Composables and Location Services
Day 12 - Finishing Day 12
DOWNLOAD SOURCE - SHOPPING LIST APP FINAL
Day 13 - Setting up the Dependencies
Day 13 - HomeView and Scaffold
Day 13 - Understanding HEX and Colors in Depth
Day 13 - Adding A NavigationIcon to our AppBar
Day 13 - Only Show the BackIcon when not on the MainScreen
Day 13 - FloatingActionButton (FAB)
Day 13 - Adding our Wish and WishItem
Day 13 - Displaying Dummy Data
Day 13 - Preparing the Navigation
Day 13 - Starting with the AddEditDetailView
Day 13 - Designing our own OutlinedTextField
Day 13 - ViewModel and AddDetailView
Day 13 - Finalizing Navigation to Move to the Add Screen
Day 13 - Adding the NavigateUp Functionality to our BackIcon
Android 14 Navigation: Implementing Back Button Functionality
Day 13 - Finishing Day 13
DOWNLOAD SOURCE - WISH LIST APP
Day 14 - Quick Overview Of Storage Options - Reading the book
Day 14 - Setting up the @Entity for our Data Class Wish
Day 14 - Setting Up the DAO and Understanding Queries
Day 14 - The Room WishDatabase Class
Day 14 - Understanding and Using a Repository
Day 14 - Prepping our ViewModel understanding Dispatchers and lateinit Var
Day 14 - Initializing our Database
Day 14 - Dependency Injection
Day 14 - Understanding Singleton and our Graph Object
Day 14 - Adding the Application Class and Using our Graph
Day 14 - Using the Graphs Repository as a Default in Our WishViewModel
Day 14 - Adding a Wish And using Snackbars
Day 14 - Reading all entry from the db and displaying them
Day 14 - Click on a Wish and see it on the detail View
Day 14 - Update An Existing Item
Day 14 - Swipe to Delete Background
DOWNLOAD SOURCE - WISH LIST APP FINAL
Day 16 - Setting up the BottomBar
Day 16 - Adding the Navigation Routes
Day 16 - Setting up the Home Screen - StickyText
Coding Exercise - Create a Browse Screen Using Lazy Vertical Grid in Compose
Day 16 - Challenge Solution - Browse Screen
Day 16 - Setting up the Library Screen
Day 16 - Fixing the Bottom Bar Selected Color
Day 16 - ModalBottomSheetLayout Setup
Day 16 - Adding Actions to our Scaffold
Day 16 - Taking care of updating the Title
Day 16 - Finishing Day 16
Intro Age in Minutes Calculator - Android 12
Setting up the UI for the age calculator
Adding more TextViews and Understanding SP DP and Pixels
Finalizing the UI of our Age Calculator App
Adding a DatePickerDialog and OnDateSetListener
Using the selected Date to display it and looking into simpledateformat and date
Finalizing The Age In Minutes App
Summary Age In Minutes App
What you will build in this chapter
Building The Calculator UI using Linear Layouts part 1
Building The Calculator UI using Linear Layouts part 2
Using OnClick and Implementing the CLR Functionality
Adding the onDecimalPoint Function
Adding the OnOperator Functionality using Contains and StartsWith on Strings
Adding Subtraction - Using split and substring methods on Strings
Adding the Missing Operations and Finalizing the App
Summary Of The Calculator Chapter
Preparing The Projects Style and Manifest
Setting up the ui and using cardview and disable the statusbar
Creating the question Model And Preparing the questions
Setting Up The QUestion UI ANd Connecting the UI to the model part 1
Setting up The questions UI and Connecting the UI to the Model Part 2
Adding The button Functionality to the questions activity
Selecting the Right and Wrong Answer and Displaying the next question
TODO - Register For Activity RESULT DEMO
Preparing the UI for the Result activity
Final Touches And Sending Data Via Intent - putExtra
Introduction - Kids Drawing App
What You Will Build In This Chapter
Setting Up The Kids Drawing App - Drawing View Part 1
Setting Up The Kids Drawing App - Drawing View Part 2
Let The Lines Persist On The View
Adding A Little Border Around The Canvas
Preparing the BrushSizeSelector and How To Use DisplayMetrics
Selecting the Brush Size From A Custom Dialog That we Created
Adding the color pallet using custom drawables that we created
Adding the Color selection
Adding the Background Image
Adding The Gallery ImageButton To The UI
Snackbar - AlertDialog - CustomDialogs Demo Part 1
CustomDialogs Demo Part 2
Custom Progress Bar Dialogs
Adding Permission requests to our KidsDrawing App
Selecting An Image from the gallery using it as a background
Adding an undo button and functionality
Do something in the Background using Coroutines
Adding a provider - path and a image sandwitch maker to our app
Saving an Image on The Phone using Coroutines and OutPutStreams
Displaying The Custom Progress Dialog and Hiding it When done
Adding a Share Feature To Share The Image Via-Email - Whatsapp etc.
Intro to 7 Minute Workout App
Using Viewbinding and getting rid of our actionbar
Adding The Exercise Screen - Intents and Customizing our Toolbar
Implementing Custom UI Elements For A PRogressbar To Tick Counterclock wise
Using CountDownTimers To Display The Seconds remaining
Adding the Exercise Timer
Adding the Model Our Constants For The Exercises and Testing It Part 1
Adding the Model Our Constants For The Exercises and Testing It Part 2
Adding the Upcoming Exercise Text To the restview
Adding Text to speech to our application
Adding a Media Player to play a sounds once an exercise is over
Viewbinding with Recyclerviews
Preparing The RecyclerView For The Bottom To Display Exercise Numbers
Creating our own custom recyclerviewadapter and viewholder
Displaying the Recyclerview with the Exercise Numbers
Displaying at witch exercise we currently are
Creating the finish activity
Setting up the CustomDialog for the Backbutton
BMI Screen for the Metric system
Adding Custom RadioGroups with Custom RadioButtons
Adding the US View Elements
FInalizing the BMI Calcutator with the us system
Adding the History UI and Activity
Looking at Lambdas once again
Room Database Demo Part 1 - Introduction to Room Database
Room Database Demo Part 2 - Setting up the Data Class - Room Entity
Room Database Demo Part 3 - The Dao Interface and the Database Class
Room Database Demo Part 4 - CREATE and store data
Room Database Demo Part 5 - Preparing the ItemAdapter with Listeners
Room Database Demo Part 6 - Displaying the Database entries
Room Database Demo Part 7 - Updating and Deleting database entries
Adding the Room Database to Our Workout App - Inserting Workouts
Fetching Data from our Database and displaying it in the log
Displaying the Workout History on our Recyclerview
Summary - 7 Minutes Workout App
Introduction to the chapter
Setting Up The Happy Places App
Adding The Add HappyPlaceActivity and using dimens string color
Adding Calendar Picker And Populate Our Date Edit Text
Using Third Party Libraries
Using The Third Party Library DEXTER For Permission Handling
DEMO - Taking Images With The Camera App and Using It In Our App
Adding The Gallery Picking Functionality
Adding Camera Picking Functionality
Storing The Images On The Device
Preparing The Database Handler And Creating Our Happy Place Model
Saving A Happy Place Via SQLite
Reading The Data From Our Local DB
Preparing The RecyclerView
Using A Third Party Library For Nice Rounded Images
Adding ActivityForResult In Order To Update The List Dynamically
Adding An OnClickListener To RecyclerView Element - Best Practice
Passing Whole Objects from One Activity To Another - Serializable vs Parcalable
Adding Swipe To Edit Functionality using ItemTouchHelper
Fixing The Updating Duplication Bug
Adding Swipe To Delete Functionality
Using The Google Places API
Displaying A Marker On The Map And Zooming In With An Animation
Adding The Select Current Location Button And Permissions
Getting The Users Location
Getting The Address From The Latitude And Longitude
Steps to integrate AdMob in your Android App in Kotlin
Introduction - Weather App
JSON And Tools - Introduction
DEMO - Downloading A Website And Its Text in Android
How Read And Use JSON Objects
Using The GSON Library to Make Working With JSON Easier
Introduction To OpenWeatherMap And General Overview
Preparing The Project And Checking If Location Provider Is Turned On
Preparing Permissionrequests Using Dexter
Preparing the Internet Connection For RETROFIT And The API Calls
Preparing The Models Based On The API
Creating The API Call with Retrofit and Getting A Response
Creating A Custom Dialog And Testing Different Internet Speeds
Adding The UI And Setting It Up
Adding The Sunrise And Sunset Time
Changing The UI Depending On The Weather Data From The API
Adding A Refresh Button In The Menu
Storing The Data Via SharedPreferences And Preloading It
Introduction to the chapter
Setting Up The Splashscreen Using Custom Fonts And How To Find Them
Setting Up The Intro Screen And Moving To It After 2 Second
Designing The SignUp Activity
Challenge - Seting Up The SignIn Activity
Setting Up The BaseActivity For Reuse Functions
Preparing The Signup Feature in Firebase And In The App
Registering The User Via Email in Firebase
Using The FireStore Database to Store The User Details Part 1
Using The FireStore Database to Store The User Details Part 2
Signing In And Getting The User Data
Preparing The XML For The Drawer And Navigation Part 1
Preparing The XML For The Drawer And Navigation Part 2
Adding The Drawer Functionality In Code
Loading The Image And Username To Display It In The Drawer
Preparing The Profile Screen
Populating The Profile Activity With User Data
Image Chooser For The Profile Image
Uploading An Image To Storage
Updating the User Data Via HashMap In The FireStore Database
Updating The MainActivit Profile Details via ActivityForResult
The Create Board Activity
Creating The Board In The Firestore Database
Preparing The Boards Recyclerview Adapter And UI Elements
Loading The Boards Into The Recyclerview
Updating The BoardsList After Creating A New Board
Loading The Board in The TaskListActivity
Preparing The Tasklist Adapter
Creating Lists Inside A Board
Creating A List Inside A Board Part 2
Editing And Deleting Lists
Adding The Cards To Lists
Preparing The MembersActivity
Creating The Member Item And The Toolbar
Fetching And Displaying The Members Of A Board
Adding A New Member To A Board - Logic
Reloading The Board Details On Change
Adding A Detail Screen For Cards
Loading Card Details To Set The Title Of The Card
Adding The Delete Card Menu Icon ANd Populating The EditText Of The Card
Preparing The Cards Color Dialog And Adapter
Selecting The Color And Updating The Card
Adding Colors To Our Cards
Passing The Memberslist To The Card
Preparing And Displaying The Card Members Dialog
Prepare The Add Members Feature
Finish The Add Members Feature
Displaying The Assigned Users Per Card On The List Level
Adding A Due Date To The App
Adding The Drag And Drop Feature
Preparing The Notification Feature
Adding The Token To The DB
Adding The Notifications Part 1
Final Steps For The Notification Feature