
Learn to build a favorites dishes app with fragments and Jetpack navigation, a recycler view, and a room-backed local database, plus random dish API, sharing, and editing features.
Explore how Android Jetpack enhances your development workflow, with practical guidance on Glide and MVVM, downloadable code, and ongoing access via Discord and YouTube for continued learning.
Install Android Studio, the Android development environment, use version 4.1.2 or newer, read the license agreement, set up a virtual device, and create or open a project.
Configure an Android virtual device with the avd manager in Android Studio to test apps on a Pixel 2 api level 30 or run on a physical device for speed.
Master Android Jetpack's suite of libraries that reduce boilerplate, ensure backward compatibility, and streamline development across versions, with components like LiveData, ViewModel, Navigation, Room, and WorkManager.
Learn how Android X unifies Jetpack and replaces the original Android support library, enabling backward compatibility across devices and a single Android X namespace with API 28 and Jetfire migration.
Explore Android X, Kotlin extensions, and coroutines, including extension functions, extension properties, lambdas, named parameters, and parameter defaults, with practical SharedPreferences asynchronous writes.
Understand the Android activity model and its lifecycle, from oncreate to ondestroy, including onstart, onresume, onpause, onstop, and onrestart, and how the manifest declares the entry activity.
Explore the Android activity lifecycle with a default main activity, observing onCreate, onStart, onResume, onPause, onStop, onRestart, and onDestroy through logs and hands-on testing.
Learn to pass data between Android activities using intents and put extra, then retrieve values with getStringExtra and getDoubleExtra, including handling defaults and nulls.
Explore view binding for type-safe UI access and discover best practices since Android 4.1, then learn to create a text animation splash screen to experiment with different animations.
Create and configure a splash screen for Android using view binding, set up a splash activity and manifest entry, and transition to the main navigation activity after launch.
Make the splash screen full screen, hide status bar, animate the app name from top to center, then transition to the main activity with a delayed handler and alpha fade.
Create a custom app icon in Android Studio by adding an image asset, selecting a downloaded image, setting a white background, and refreshing launcher icons across versions.
Refactor your Android app into a model-view-viewmodel structure, moving activities and fragments into view and viewmodel folders, and implement an add dish flow with a top menu action.
Learn how the Jetpack Android layouts library structures user interfaces with linear, relative, constraint, and frame layouts, and how XML and view binding define and access these views.
Master constraint layout by building a multi-element login UI entirely in the designer with drag-and-drop elements, constraints, and vertical chain styles to ensure consistent layouts across devices.
Explore constraint layout basics and chain styles by using infer constraints, creating vertical chains, and adjusting horizontal and vertical biases to distribute and align multiple buttons.
Master how to position views in a relative layout by centering in parent and positioning above, below, left of, or right of other views, using margins to space items.
Explore how to use a linear layout to arrange views vertically or horizontally. Master wrapcontent and matchparent, layout weight, and gravity to control size and alignment.
Frame layout introduces layering of views within a parent container, enabling images and icons to stack with gravity-based positioning.
Design a responsive add/update dish screen using constraint layout with a top app bar, scrollable content, and a frame layout for layered images, using esdp for scalable sizing.
Finalize the add update dishes UI by configuring the scroll view and applying constraint layout rules, including outlined text inputs with margins for evenly spaced controls.
Enable a back button in the add update dish activity with view binding, set up the action bar, and handle navigation to mimic back press, plus manifest changes for orientation.
Implement the onClick listener for the add dish image in AddUpdateDishesActivity, using binding, null checks, and a toast to confirm clicks; prepare for image selection permissions in a future step.
Implement a custom image selection dialog in Android with camera and gallery options, using a bound layout and view binding to handle onClick events that dismiss the dialog.
Learn to implement runtime permission requests using Dexter for camera and storage in Android. Update the manifest and Gradle, handle multiple permissions, rationales, and direct users to app settings.
Implement camera integration to capture and display a photo in the app, handle storage permissions across API levels, and update the UI icon to illustrate editing after image selection.
Learn to add gallery permission and implement image selection from the gallery in an Android Jetpack project, using a gallery intent, result handling with onActivityResult, and image uri binding.
Glide, a powerful third-party library, streamlines image loading from storage paths or URLs, enabling seamless use of images across the app.
Load images efficiently with Glide, a fast Android image loading library focused on smooth scrolling. Display images from urls into image views with placeholders, circle crop, and disk caching.
Integrate Glide to load images in android by adding gradle dependencies and repositories. Glide handles drawable and uri sources, displaying images in an image view with centercrop and optional placeholders.
Store the selected image to internal storage in a dish images directory, save the bitmap as jpeg via a save image to internal storage function, and return its absolute path.
Create a utilities constants object for dish types, categories, and cooking times, then build a reusable dialog powered by a RecyclerView and a custom list adapter using view binding.
This lecture finalizes selections using view binding with a RecyclerView and a custom dialog, wiring an adapter and onClick events to choose dish type, category, and cooking time.
Learn to select items from lists and validate all dish entries, including dialog management, on-click handling, input trimming, and showing errors when entries are missing.
Explore the room database overview to store data permanently, build the architecture, and master CRUD operations with Room, LiveData, Dao, and Viewmodels across the Jetpack toolkit.
Learn to set up a room entity for a favorite dish, including table, columns, and primary key, and see how room interacts with DAO, view model, repository, and UI.
Set up a Room database dao interface to perform create, read, update, and delete operations with suspend functions and coroutines, ensuring background thread execution. Prepare to insert favorite dish details.
Set up the room database to manage local SQLite data with the Dish entity and Dao, using a singleton via a companion object and enforcing main-thread query avoidance.
Set up a repository as the single source of truth, abstracting data sources from UI and ViewModel, coordinating network data with a Dao-backed local database via suspend functions.
Set up the fav dish view model and factory, wire the repository to a Room database via a Dao, and configure a lazy application class to share the database.
Set up add update dish screen with a view model, build a dish object using local image source, and insert via repository into the database, with toast and log.
Retrieve inserted data with a SQL query, expose it as a flow, and observe changes. The DAO, entity, repository, and view model update the UI when data changes.
Display and update a grid of dish entries from a database using a RecyclerView with a two-column grid, card views, view binding, and an adapter that observes data changes.
Refactor the app by renaming fragments to all dishes, favorite dishes, and random dish, update mobile navigation and strings, and adjust icons for the bottom navigation.
Navigate between fragments using Android Jetpack tools and type-safe arguments to pass data safely, avoiding bundles and strings, while exploring XML navigation and the nav graph.
Explore how fragments serve as modular, reusable portions of an activity’s user interface with their own lifecycle and input handling, enabling flexible layouts across devices and screen sizes.
Explore fragment manager actions—add, remove, replace—and back stack navigation, and understand fragment and view lifecycles alongside dialogue fragments with callbacks such as on create dialogue and on dismiss.
Enable back navigation with the navigation component and a global nav controller, then pass data between fragments using navigation args and bundles. Explore save arcs as a safer way.
Create a details fragment in Android Jetpack and navigate from all dishes to dish details using a navigation action and save args for type-safe data transfer.
Learn to hide the bottom navigation with animation when opening details and reveal it when returning, using a navigation controller and binding.
Learn to move between fragments while passing a fav dish object via navigation arguments, define the fragment argument with its type, and display the received data in the details fragment.
Learn to set up the dish details fragment UI in Android Jetpack Masterclass by creating the layout, binding UI elements with view binding, and loading the image with Glide.
Do you want to level up your Android programming skills and call yourself a Senior Android Developer? Then my Android Jetpack Masterclass is the right fit for you.
In this course, you are going to learn how to use the Android Jetpack suite. This will allow you not only to learn new features of Android but also make sure that your code is up to date, clean, uses best practices, and is easily maintainable. A must for any developer who wants to call himself a senior developer.
In this course, you will build a Favorite Dishes Database Application that uses an API to get cool random dishes that we can cook and of course also store on the device using the Room Database.
Throughout the whole course you will step by step uncover complex concepts in separate demos which will help you then to easily understand them and then apply the techniques step by step in the favorite dishes application. This will ensure that you understand the concept and can apply it in your own applications.
Along the way you are going to learn how to use the most important libraries of the Android Jetpack suite of libraries. And of course, you're going to learn how to use the MVVM pattern.
This course consists of 14 sections, covering following topics:
ViewBinding and Animation(Splash Screen)
MVVM
Permissions
Glide
Room Database
LiveData, Lifecycles and ViewModels
Navigation Component
Android Palette and CRUD operations
Retrofit and RxJava
WorkManager, Sharing and Notifications
Don't wait your chance to be senior developer and start learning Jetpack suite today and don't worry, you will not only get the course content, but also a 5 Star customer support. So if you have any questions or get stuck while learning in the course you will get our help.
30-DAY FULL MONEY-BACK GUARANTEE
This course comes with a 30-day full money-back guarantee. Take the course, watch every lecture, and do the exercises, and if you feel like this course is not for you, ask for a full refund within 30 days. All your money back, no questions asked.
ABOUT YOUR INSTRUCTOR:
My name is Denis Panjuta and in my courses, I have taught over 150.000 students how to code. I have a Bachelor of Engineering at the University of Applied Sciences in Constance (Germany). I love teaching and creating high-quality courses. My mission is, to teach programming to over 10 M people!