This is a collection of Android projects that I maintain mainly for personal use for remembering some technique or code usage guideline. It is basically a collection of samples.
Some of the sample projects in this repository were obtained from third parties and adjusted to my needs. For those projects the original license was maintained and mentioned in the proper project README.
Modularization is an architectural strategy utilized to improve the maintainability of a software project, specially when a project starts to grow larger or if there are more than one team involved in parts of its development.
- Modularized Sample App - A sample on how to create a modularized project for an Android app using the Version Catalog and Convention Plugins features of the Gradle build automation tool
Flavors are used to provide different "flavors" of the same app. A good example is a "free" and a "pro" version of the same app.
- Buy Me a Drink App - A Sample on how to create an App with "free" and "pro" versions by using the flavors configurations. The free versions has adds banners while the pro version is adds free and also has a premium functionality that is not available on the free version.
- Using Hilt in your Android app Codelab - LoggingApp - Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection on an Android project. It is built on top of the popular DI library Dagger. This app is the result of my implementation of this Codelab.
Projects developed by following the Jetpack Compose Pathways Course and its Codelabs
- Basics Codelab
- Migration Codelab
- Basic Layouts on Compose Codelab - MySoothe App
- Theming in Compose with Material 3 Codelab - Reply
- Jetpack Compose Animations Codelab
- State on Jetpack Compose Codelab
- Advanced State and Collateral Effects on Jetpack Compose Codelab - Crane Material Study App
- Jetpack Compose Navigation Codelab - Rally App
- Testing in Jetpack Compose Codelab - Rally App
- Accessibility in Jetpack Compose Codelab - JetNews App
- MultipleFab App - a Sample on how to create a Multiple Floating Action Button, a Fab that cam be expanded to display multiple inner Fabs. Each one with its own Action.
Projects developed by following the Udacity course
- Module 1 - Build your First App
- Module 2 - Layouts
- Module 3 - App Navigation
- Module 4 - Activity & Fragment Lifecycle - Activities and Fragment Lifecycle, Log and Timber, Using adb, basic on saving and recovering app state
- Module 5 - App Architecture (UI Layer) - MVVM, ViewModel, Ways to save app state, LiveData, Data binding, Formatting Strings, Transformations, Vibration on Android, Android Permissions, Android Apps Architecture
- Module 6 - App Architecture (Persistence) - Room, Companion Objects, Testing Apps on Android, Reusing Layouts (Tags Merge and Include), Coroutines, Back and up navigation, Bind layout views to Architecture Components
- Module 7 - RecyclerView
- Sleep Tracker W
- Branches of the exercises evolution:
- Step 1 - An Introductory simple RecyclerView implementation
- Step 2 - Changed the RecyclerView to use a ListAdapter
- Step 3 - Implemented databinding in the RecyclerView
- Step 4 - Changed the RecyclerView to a GridLayout
- Step 5 - Implemented item navigation on the RecyclerView
- Step 6 - Added a header to the RecyclerView
- Module 8 - Connect to the Internet - Retrofit library (http client), Glide library (Image loading), Connect to the Network, Android Permissions, Parcelable objects in bundles
- Module 9 - Behind the Scenes - How to implement an offline cache and how to implement background tasks with WorManager
- Module 10 - Designing for Everyone - Themes, Styles, View Attributes, Design, Supporting different languages and cultures, RTL Support, Accessibility, Drawables, Dark Mode Support
All my code produced for this repository is released under MIT License.
Some of the projects are based on code obtained from third party. In this case, I respect the original license as mentioned on each project own README if appropriate. The original license will also be kept in the project directory for reference.