Modern Food Recipes App - Android Development With Kotlin
Last updated 12/2021
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 7.44 GB | Duration: 15h 54m
Last updated 12/2021
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 7.44 GB | Duration: 15h 54m
Develop beautiful and fully functional Android App in Android Studio using the power of Kotlin programming language.
What you'll learn
Develop a fully functional Android App
Food Recipes Android app
ROOM Database
Dependency Injection - Dagger-Hilt
Retrofit
Offline Cache
Local & Remote Data Sources
Kotlin
Kotlin Coroutines
Android Architecture Component
Navigation Component
DataStore Preferences
Data Binding
ViewModel
AndroidViewModel
LiveData
Flow
DiffUtil
RecyclerView
Search Recyclerview
REST API
Client - Server Communication
Send HTTP Request
Parse HTTP Response
Dark and Light Theme
Night Mode
Motion Layout
Material Components
Material Design
Create Shimmer Effect
Database Inspector
ViewPager
ViewPager2
Create Contextual Action Mode
Share Data with Other Apps
Create Modal Bottom Sheet
Nice looking UI Design
Migration from kotlin-android-extensions plugin
And more…
Requirements
Basic knowledge of Kotlin programming langauge
Basic knowledge of Android Architecture Components
Knowledge about Adobe XD is a plus (but not necessary)
Description
Hello there and welcome to my course, in this course I'm going to teach you how to create a fully functional Android application using the power of Kotlin programming language. We are going to develop Food Recipes application, where we can browse recipes from various different kind of meal and diet types. This App Design will be a lot similar to the one from my Material UI Design course which I made a while ago.Our application will work with both Remote and local data sources. And for Remote data source we will use a third party API for food recipes, called Spoonacular. I'm going to teach you how to establish connection between your app and the server. So basically we will send GET Request to our API and receive a list of food recipes as a Response. Also our app will be able to handle no internet connection, and store or cache the data localy to our database when it's needed.Also from our application we will be able to search recipes from our API directly. So if you have your favorite flavor you can search it here and probably you'll find many amazing recipes. Next our app will have Favorites Fragment where we can save our favorite recipes for later use when we need them. And finally our app will have it's fun side, and that is food joke fragment.However this course is not for Absolute Beginners in Android Development, at least you need to have a basic knowledge about most popular Android Architecture components, and Kotlin programming language in general. This is not going to be easy task especially if you haven't worked before simultaneously with API and local database. Still don't get discouraged everything is learnable here, if you are motivated enough of course.One more thing, so this course will be an ongoing project which means that I will post updates on a regular basis, whenever we find a new bug, or whenever some code cleanup is required. Which is why I want to involve all of you who watch this course to work together with me in making this app even better. I'm going to give me you more details about that at the end of this course of course.So what are you waiting for, let's get started developers!Source code: Visit my Github profile (stevdza-san)
Overview
Section 1: Introduction
Lecture 1 Introduction
Lecture 2 Application Design
Lecture 3 Application Preview
Lecture 4 Project Structure Overview
Lecture 5 Introducing with API
Lecture 6 API Response Example
Lecture 7 Github Repository
Section 2: Navigation Component Setup
Lecture 8 Project Setup
Lecture 9 Navigation Component Setup
Section 3: Design RecipesFragment Layout
Lecture 10 Design RecipesFragment Layout
Lecture 11 Design RecipesRowLayout
Lecture 12 Design Recyclerview Placeholder Layout
Section 4: Start with Retrofit
Lecture 13 Introducing with Retrofit
Lecture 14 Generate Model classes for API
Lecture 15 Create Constants class
Lecture 16 Create RecipesApi interface
Lecture 17 Project Structure Overview & RemoteDataSource class
Section 5: Introducing with Dependency Injection
Lecture 18 Dependency Injection Overview
Lecture 19 Manual Dependency Injection
Lecture 20 Dagger Basics
Lecture 21 Hilt - Dependency Injection Library | Part 1
Lecture 22 Hilt - Dependency Injection Library | Part 2
Lecture 23 Component Scoping
Section 6: Dagger-Hilt Setup - NetworkModule
Lecture 24 Create MyApplication class
Lecture 25 Create NetworkModule
Lecture 26 Inject RemoteDataSource class
Lecture 27 Create and Inject Repository class
Lecture 28 Create NetworkResult class
Lecture 29 Create and Inject MainViewModel class
Section 7: Introducing with Data Binding
Lecture 30 Introducing with Data Binding
Lecture 31 Binding Adapters
Section 8: Display API Data in Recyclerview
Lecture 32 Create RecipesAdapter class
Lecture 33 DiffUtil - Create RecipesDiffUtil class
Lecture 34 Create RecipesRowBinding class
Lecture 35 RecipesFragment - Connect the Dots
Lecture 36 Create RecipesViewModel class
Lecture 37 Let's Recap
Section 9: Introducing with ROOM Library
Lecture 38 Introducing with ROOM Library
Section 10: ROOM Database
Lecture 39 Offline Caching
Lecture 40 Introducing with Kotlin Flow
Lecture 41 Create Entity (RecipesEntity)
Lecture 42 Create DAO (RecipesDao)
Lecture 43 Create Type Converter (RecipesTypeConverter)
Lecture 44 Create Database (RecipesDatabase)
Section 11: Dagger-Hilt Setup - DatabaseModule
Lecture 45 Create DatabaseModule
Lecture 46 Create and Inject LocalDataSource
Lecture 47 MainViewModel - Offline Cache
Lecture 48 RecipesFragment - Read from Database
Lecture 49 ObserveOnce - Extension Function
Lecture 50 Database Inspector
Lecture 51 Placeholder Image - Error
Lecture 52 Create RecipesBinding class
Section 12: Introducing with DataStore Preferences
Lecture 53 Introducing with DataStore Preferences
Section 13: Add Bottom Sheet
Lecture 54 About BottomSheet
Lecture 55 Design RecipesBottomSheet
Lecture 56 Navigate to RecipesBottomSheet
Lecture 57 Customize Chip Style
Lecture 58 Create and Inject DataStoreRepository class
Lecture 59 Modify and Inject RecipesViewModel
Lecture 60 RecipesBottomSheet - Persist Selected Chips
Lecture 61 Handle Return from BottomSheet - Safe Args
Lecture 62 Bottom Sheet - Recap
Section 14: Handle Internet Connection
Lecture 63 Introducing with StateFlow
Lecture 64 Create NetworkListener class
Lecture 65 RecipesFragment - Listen for Internet Connection
Lecture 66 Back Online - Persist data with DataStore
Section 15: Search Recipes
Lecture 67 Design RecipesFragment Menu
Lecture 68 FoodRecipesApi - searchRecipes()
Lecture 69 RemoteDataSource - searchRecipes()
Lecture 70 MainViewModel - Handle Search Response
Lecture 71 RecipesFragment - searchApiData()
Section 16: DetailsActivity & OverviewFragment
Lecture 72 Design activity_details Layout
Lecture 73 Send Result to DetailsActivity - Safe Args
Lecture 74 Create PagerAdapter class
Lecture 75 Design fragment_overview Layout
Lecture 76 OverviewFragment - Display Recipe Data
Lecture 77 Parse HTML Text - Jsoup
Section 17: IngredientsFragment
Lecture 78 Design fragment_ingredients Layout
Lecture 79 Design ingredients_row_layout
Lecture 80 Modify RecipesDiffUtil class
Lecture 81 Create IngredientsAdapter class
Lecture 82 IngredientsFragment - Display Ingredients Data
Section 18: InstructionsFragment
Lecture 83 Modify InstructionsFragment
Lecture 84 Modify OverviewFragment & recipes_row_layout
Section 19: ROOM Database - Favorite Recipes
Lecture 85 Create FavoritesEntity class
Lecture 86 Modify RecipesTypeConverter class
Lecture 87 Modify RecipesDao interface
Lecture 88 Modify LocalDataSource class
Lecture 89 Modify MainViewModel class
Lecture 90 Modify RecipesDatabase class
Section 20: Add to Favorites - Details Activity
Lecture 91 Create details_menu
Lecture 92 Save Recipe to Favorites
Lecture 93 Check if Recipe is Saved
Lecture 94 Remove Recipe from Favorites
Section 21: FavoriteRecipesFragment
Lecture 95 Design fragment_favorite_recipes Layout
Lecture 96 Design favorite_recipes_row_layout
Lecture 97 Create FavoriteRecipesAdapter class
Lecture 98 Display Favorite Recipes
Lecture 99 Create FavoriteRecipesBinding class
Section 22: Contextual Action Mode
Lecture 100 FavoriteRecipesFragment - Single Click Listener
Lecture 101 FavoriteRecipesFragment - Long Click Listener
Lecture 102 Apply Contextual Action Mode Style
Lecture 103 Recipe Selection Style - onLongClick
Lecture 104 Apply Contextual Action Mode Title
Lecture 105 Delete Selected Favorite Recipes
Lecture 106 Close Contextual Action Mode
Lecture 107 FavoriteRecipesFragment - ParseHTML
Lecture 108 Recap - Contextual Action Mode
Lecture 109 Create favorite_recipes_menu
Section 23: FoodJokeFragment
Lecture 110 Design fragment_food_joke
Lecture 111 Create FoodJoke model class
Lecture 112 Create FoodJoke GET Request
Lecture 113 Modify RemoteDataSource - FoodJoke
Lecture 114 Modify MainViewModel - FoodJoke
Lecture 115 Offline Cache - FoodJoke
Lecture 116 FoodJokeFragment - Let's Start
Lecture 117 FoodJokeBinding class - Part 1
Lecture 118 FoodJokeBinding class - Part 2
Lecture 119 Add Share Menu
Lecture 120 Recap - FoodJokeFragment
Section 24: Splash Screen
Lecture 121 Add Splash Screen
Section 25: Dark Theme
Lecture 122 RecipesFragment - Dark Theme
Lecture 123 FavoriteRecipesFragment - Dark Theme
Lecture 124 FoodJokeFragment - Dark Theme
Lecture 125 RecipesBottomSheet - Dark Theme
Lecture 126 Placeholder Row Layout - Dark Theme
Lecture 127 DetailsActivity - Dark Theme
Lecture 128 OverviewFragment - Dark Theme
Lecture 129 IngredientsFragment - Dark Theme
Section 26: Motion Layout
Lecture 130 Add Motion Layout - OverviewFragment
Section 27: App Icon
Lecture 131 Add App Icon
Section 28: Final Word
Lecture 132 Final Word
Section 29: Course Updates - Bug Hunt & Code Cleanup
Lecture 133 DataStore 1.0.0-alpha04 - Package Issue Fixed
Lecture 134 Internet Connection Bug - Fixed
Lecture 135 Migrate from 'kotlin-android-extensions' plugin
Lecture 136 Migrate to ViewPager2
Lecture 137 Code Cleanup - RecipesBinding & RecipesRowBinding
Lecture 138 Fix a Memory Leak - RecipesBottomSheet
Lecture 139 FavoriteRecipesBinding - Code Cleanup
Lecture 140 Yellow Star Issue - Fixed
Lecture 141 Multi Selection Mode - Fixed
Lecture 142 RecyclerView - Item Selection State - Fixed
Lecture 143 Dependency Update - Dagger-Hilt and Data Store
Lecture 144 Dependency Update - DataStore-Alpha07
Lecture 145 OverviewFragment - Code Cleanup
Lecture 146 Jcenter Migration + Code Cleanup & Bug Fix
Lecture 147 RecipesBottomSheet bug fixed & Updated updateChip() fun
Lecture 148 Motion Layout & View Pager gestures conflict - Fixed
Lecture 149 NetworkListener's class function Updated
Android Developers,Mobile App Developers,Software Developers,Kotlin Programmers