Mô tả

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 locally 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)





Bạn sẽ học được gì

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...

Yêu cầu

  • Basic knowledge of Kotlin programming langauge
  • Basic knowledge of Android Architecture Components
  • Knowledge about Adobe XD is a plus (but not necessary)

Nội dung khoá học

29 sections

Introduction

7 lectures
Introduction
03:26
Application Design
03:59
Application Preview
05:18
Project Structure Overview
02:43
Introducing with API
08:26
API Response Example
05:56
Github Repository
01:10

Navigation Component Setup

2 lectures
Project Setup
05:14
Navigation Component Setup
14:40

Design RecipesFragment Layout

3 lectures
Design RecipesFragment Layout
08:13
Design RecipesRowLayout
19:40
Design Recyclerview Placeholder Layout
08:20

Start with Retrofit

5 lectures
Introducing with Retrofit
01:56
Generate Model classes for API
09:55
Create Constants class
04:49
Create RecipesApi interface
04:38
Project Structure Overview & RemoteDataSource class
03:25

Introducing with Dependency Injection

6 lectures
Dependency Injection Overview
10:37
Manual Dependency Injection
14:01
Dagger Basics
11:46
Hilt - Dependency Injection Library | Part 1
12:46
Hilt - Dependency Injection Library | Part 2
07:35
Component Scoping
07:30

Dagger-Hilt Setup - NetworkModule

6 lectures
Create MyApplication class
02:34
Create NetworkModule
07:03
Inject RemoteDataSource class
03:32
Create and Inject Repository class
03:00
Create NetworkResult class
02:42
Create and Inject MainViewModel class
13:59

Introducing with Data Binding

2 lectures
Introducing with Data Binding
06:40
Binding Adapters
02:25

Display API Data in Recyclerview

6 lectures
Create RecipesAdapter class
10:16
DiffUtil - Create RecipesDiffUtil class
08:41
Create RecipesRowBinding class
14:04
RecipesFragment - Connect the Dots
16:03
Create RecipesViewModel class
06:40
Let's Recap
03:47

Introducing with ROOM Library

1 lectures
Introducing with ROOM Library
02:37

ROOM Database

6 lectures
Offline Caching
02:18
Introducing with Kotlin Flow
04:06
Create Entity (RecipesEntity)
03:07
Create DAO (RecipesDao)
04:47
Create Type Converter (RecipesTypeConverter)
03:42
Create Database (RecipesDatabase)
03:22

Dagger-Hilt Setup - DatabaseModule

8 lectures
Create DatabaseModule
03:24
Create and Inject LocalDataSource
03:24
MainViewModel - Offline Cache
05:36
RecipesFragment - Read from Database
08:08
ObserveOnce - Extension Function
03:15
Database Inspector
03:49
Placeholder Image - Error
02:43
Create RecipesBinding class
13:33

Introducing with DataStore Preferences

1 lectures
Introducing with DataStore Preferences
01:40

Add Bottom Sheet

9 lectures
About BottomSheet
02:30
Design RecipesBottomSheet
15:36
Navigate to RecipesBottomSheet
03:08
Customize Chip Style
10:47
Create and Inject DataStoreRepository class
18:24
Modify and Inject RecipesViewModel
05:17
RecipesBottomSheet - Persist Selected Chips
15:21
Handle Return from BottomSheet - Safe Args
07:11
Bottom Sheet - Recap
05:16

Handle Internet Connection

4 lectures
Introducing with StateFlow
01:46
Create NetworkListener class
08:09
RecipesFragment - Listen for Internet Connection
07:46
Back Online - Persist data with DataStore
09:59

Search Recipes

5 lectures
Design RecipesFragment Menu
06:14
FoodRecipesApi - searchRecipes()
02:45
RemoteDataSource - searchRecipes()
01:06
MainViewModel - Handle Search Response
03:14
RecipesFragment - searchApiData()
09:13

DetailsActivity & OverviewFragment

6 lectures
Design activity_details Layout
08:33
Send Result to DetailsActivity - Safe Args
09:07
Create PagerAdapter class
09:44
Design fragment_overview Layout
17:41
OverviewFragment - Display Recipe Data
08:00
Parse HTML Text - Jsoup
05:04

IngredientsFragment

5 lectures
Design fragment_ingredients Layout
01:27
Design ingredients_row_layout
10:40
Modify RecipesDiffUtil class
01:48
Create IngredientsAdapter class
10:08
IngredientsFragment - Display Ingredients Data
06:43

InstructionsFragment

2 lectures
Modify InstructionsFragment
07:51
Modify OverviewFragment & recipes_row_layout
01:42

ROOM Database - Favorite Recipes

6 lectures
Create FavoritesEntity class
05:09
Modify RecipesTypeConverter class
03:29
Modify RecipesDao interface
03:06
Modify LocalDataSource class
02:24
Modify MainViewModel class
02:51
Modify RecipesDatabase class
01:51

Add to Favorites - Details Activity

4 lectures
Create details_menu
03:30
Save Recipe to Favorites
08:34
Check if Recipe is Saved
05:31
Remove Recipe from Favorites
08:25

FavoriteRecipesFragment

5 lectures
Design fragment_favorite_recipes Layout
03:38
Design favorite_recipes_row_layout
04:17
Create FavoriteRecipesAdapter class
08:14
Display Favorite Recipes
06:46
Create FavoriteRecipesBinding class
12:10

Contextual Action Mode

10 lectures
FavoriteRecipesFragment - Single Click Listener
05:18
FavoriteRecipesFragment - Long Click Listener
06:35
Apply Contextual Action Mode Style
05:06
Recipe Selection Style - onLongClick
12:44
Apply Contextual Action Mode Title
05:48
Delete Selected Favorite Recipes
06:18
Close Contextual Action Mode
02:50
FavoriteRecipesFragment - ParseHTML
01:05
Recap - Contextual Action Mode
06:51
Create favorite_recipes_menu
04:15

FoodJokeFragment

11 lectures
Design fragment_food_joke
09:59
Create FoodJoke model class
02:56
Create FoodJoke GET Request
02:16
Modify RemoteDataSource - FoodJoke
00:51
Modify MainViewModel - FoodJoke
04:09
Offline Cache - FoodJoke
10:12
FoodJokeFragment - Let's Start
10:48
FoodJokeBinding class - Part 1
11:01
FoodJokeBinding class - Part 2
08:23
Add Share Menu
07:45
Recap - FoodJokeFragment
03:11

Splash Screen

1 lectures
Add Splash Screen
07:29

Dark Theme

8 lectures
RecipesFragment - Dark Theme
20:13
FavoriteRecipesFragment - Dark Theme
06:03
FoodJokeFragment - Dark Theme
05:35
RecipesBottomSheet - Dark Theme
07:07
Placeholder Row Layout - Dark Theme
02:03
DetailsActivity - Dark Theme
03:30
OverviewFragment - Dark Theme
03:40
IngredientsFragment - Dark Theme
03:30

Motion Layout

1 lectures
Add Motion Layout - OverviewFragment
08:06

App Icon

1 lectures
Add App Icon
06:10

Final Word

1 lectures
Final Word
03:02

Course Updates - Bug Hunt & Code Cleanup

19 lectures
DataStore 1.0.0-alpha04 - Package Issue Fixed
02:17
Internet Connection Bug - Fixed
04:11
Migrate from 'kotlin-android-extensions' plugin
16:49
Migrate to ViewPager2
04:12
Code Cleanup - RecipesBinding & RecipesRowBinding
05:01
Fix a Memory Leak - RecipesBottomSheet
04:54
FavoriteRecipesBinding - Code Cleanup
05:08
Yellow Star Issue - Fixed
04:07
Multi Selection Mode - Fixed
03:24
RecyclerView - Item Selection State - Fixed
04:27
Dependency Update - Dagger-Hilt and Data Store
04:59
Dependency Update - DataStore-Alpha07
02:11
OverviewFragment - Code Cleanup
04:00
Jcenter Migration + Code Cleanup & Bug Fix
07:32
RecipesBottomSheet bug fixed & Updated updateChip() fun
09:06
Motion Layout & View Pager gestures conflict - Fixed
02:32
NetworkListener's class function Updated
05:36
Removing Deprecated Code
05:43
Fix unnecessary calls to an API
04:52

Đánh giá của học viên

Chưa có đánh giá
Course Rating
5
0%
4
0%
3
0%
2
0%
1
0%

Bình luận khách hàng

Viết Bình Luận

Bạn đánh giá khoá học này thế nào?

image

Đăng ký get khoá học Udemy - Unica - Gitiho giá chỉ 50k!

Get khoá học giá rẻ ngay trước khi bị fix.