Description
In this course you'll learn to build a real application that interacts with the website open-api.xyz.
Open-api.xyz is a sandbox website for codingwithmitch members to practice interacting with a Rest API.
Prerequisites (Recommended not required):
What you'll learn:
- Kotlin:
- Coroutines:
- Advanced coroutine management using jobs
- Cancelling active jobs
- Coroutine scoping
- Navigation Components:
- Bottom Navigation View with fragments
- Leveraging multiple navigation graphs (this is cutting edge content)
- Dagger 2:
- custom scopes, fragment injection, activity injection, Viewmodel injection
- MVI architecture:
- Basically this is MVVM with some additions
- State management
- Building a generic BaseViewModel
- Repository pattern (NetworkBoundResource)
- Room Persistence:
- SQLite on Android with Room Persistence library
- Custom queries, inserts, deletes, updates
- Foreign Key relationships
- Multiple database tables
- Cache:
- Database caching (saving data from network into local cache)
- Single source of truth principal
- Retrofit 2:
- Handling any type of response from server (success, error, none, etc...)
- Returning LiveData from Retrofit calls (Retrofit Call Adapter)
- ViewModels:
- Sharing a ViewModel between several fragments
- Building a powerful generic BaseViewModel
- WebViews:
- Interacting with the server through a webview (Javascript)
- SearchView:
- Programmatically implement a SearchView
- Execute search queries to network and db cache
- Images:
- Selecting images from phone memory
- Cropping images to a specific aspect ratio
- Setting limitations on image size and aspect ratio
- Uploading a cropped image to server
- Network Request Management:
- Cancelling pending network requests (Kotlin coroutines)
- Testing for network delays
- Pagination:
- Paginating objects returned from server and database cache
- Material Design:
- Bottom Navigation View with Fragments
- Customizing Bottom Navigation Icon behavior
- Handling Different Screen Sizes (ConstraintLayout)
- Material Dialogs
- Fragment transition animations