
In this video I'll show you how to get the TMDB API key that we are going to use in our app development.
Please note that this API is free for learning purposes! If you decide to publish this app or gain profits from using this API you must get in touch with TMDB team!
In this lesson we'll go through our Android Studio setup that we're going to use for this course. To avoid any problems that may occur during this course I would highly recommend to make sure that you're using the same tools as showcased in this video!
You'll get a first glance at JetBrains Toolbox app that makes Android Studio version management very easy.
Also I'll show you the cosmetic setup that I prefer as well as plugins that are very useful for any Android Developer!
Such as ktlint and Json To Kotlin Class
Rules to disable for ktlint:
trailing-comma-on-call-site, trailing-comma-on-declaration-site
(just copy this into Disable Rules field and click apply)
We'll start from a base project that I have created for this course. I will be empty and contain only setup for libraries that we're going to use. So in that lecture I will go through it and will explain why and how I've set it up like this.
In this lesson you'll learn the first step for development of any app. And that setting up the structure of your folders(or as they everybody calls them - Packages) inside your project.
In this video we'll set up the screens that we're going to have and create the navigation between them using the Navigation Library provided by Google.
Also we'll talk a little about the best practices for Fragments and we'll set up ViewBinding
This is where Architecture starts!
We'll set up the Dependency Injection by using Koin Library and directly start using it by injecting the ViewModel into our Fragment.
Also you'll learn how the communication between View and ViewModel should work by using a Flow
Here we're setting up the Retrofit library. But it's not just a quick setup, we'll create the Repository layer and establish the communication with the ViewModel as a dependency!
RecyclerView is one of the most used components in Android, and thus, understanding it is crucial for any developer. We'll go through different ways that people are using it and in the end we'll get to the best way!
If you want to load data continuously as the scroll goes down, Paging library can help you with that !
Learn how to set it up the right way and handle all the possible states.
We'll introduce now the most used Clean Architecture component - the UseCase!
Practice everything that we learned before and learn how to pass parameters between your screens.
Setup for Room library, or in other words our local database! We'll go through Entities and how to use them in 2 different ways as well as on how to store custom data types.
Now, as we have our local database all set. We can show it in our Saved Movies screen. Also you're going to learn what does it mean to be Reactive to data changes.
We ended up with quite some code! We'll now split our project into something bigger than just Packages - into Modules !
Get started with Compose the right way! Step one - Theming!
Here I'll show you the easiest way to set up a theme for your project by using a Theme Builder
Create your first Compose Components, learn how to Preview them and how to support Dark Mode for each of them!
Puting the created components alltogether to Compose our first screen ? Super easy!
Also learn how to subscribe to your ViewModel from a Composable function.
Practicing Compose by migrating another 2 screens
The last but the least - Composing the Details screen
Set up Compose Navigation and get rid of Fragments once and for all!
Compose Navigation looks odd and maybe it's not that easy to use. But we can improve that by ourselves!
Hello and welcome to my Android Development Architecture course!
In this course, we'll build an app from scratch that displays an infinite list of movies that load lazily in blocks. We will implement a search function with real-time API calls and the ability to save movies to a local database in two different ways.
We'll first create the screens by using the old layouts, then I'll show you how to migrate to Compose in simple steps. You might be wondering: why not do this directly in Compose? Well, the answer is simple. Compose is a fairly new technology and not all projects have been migrated yet. You never know what kind of projects you'll end up with. If you understand both systems and work with them as a professional, you will stand out from the crowd. A big advantage is that you can organize and design the migration yourself within your team!
But the most important thing about this app is not its functionality or its design. But how do we architect it and that's why we will use tools that are proven to work best for Android development.
Here is a list of the technologies we will use:
Retrofit - One of the main network call libraries
Room - Google-recommended library for local databases
Koin - The pragmatic Kotlin Dependency Injection framework
Coil - to load network images
Gson - Json converter for API responses
Kotlin Flow and Coroutines - Asynchronous or non-blocking programming as an important part of the development landscape.
Ktlint - kotlin-linter
And also the Jetpack libraries offered by Google:
Pagination - for simple and infinite data loading
Navigation - for easy navigation between screens
Materials design - design framework
Compose - the latest Android UI framework
They are all configured and packaged in the standard MVVM or Model-View-ViewModel and Clean Architecture.
You’ll end up with 2 base projects, first with legacy xml layouting and second with the newest Compose technology. And because we’ll be using TMDB service, after this course you’ll have to possibility to develop your own ideas on top of it and thus, practice the fresh knowledge you just got!
This course is intended to be continually updated, meaning new modules will be added over time, increasing the price, but if you have already purchased the course you will not have to pay extra. And there's always a 30-day money back guarantee if you decide to issue a refund!