This Pokedex - Pokemon app is a project that contain and apply the latest Android technologies recommended by Google such as Jetpack Compose, the new way to build the design. Also, it contains some other important technologies such as Room Database, KSP, Hilt Dependencies Injection, the new Shared Element Transaction and new Navigation Type Safety.
Important
Similar project with Flutter (Dart Language) 👉 Pokedex_Flutter 👈
The programming language is the Kotlin, it is a modern, JVM-based programming language that is concise, safe, and interoperable with Java.
Kotlin Coroutines is used for asynchronous tasks.
Kotlin KTX is a collection of Kotlin extensions that offer more concise and expressive code for working with Android APIs and libraries.
The UI is build using Jetpack Compose.
For Navigation between screens is use the New Navigation Type Safety.
For Animation and Navigation from the main screen to details screen is use the new Shared Element Transition. (Shared Element Transition - Article, Shared Element Transition - Article)
Retrofit is responsible for making requests and retrieving data from the remote server. (Repository)
Room Database is responsible for saving the retrieved data from the remote server, querying data from the local database, and supporting offline functionality.
Palette is used to retrieve the color from the image; in our case, we are using the Pokémon color to paint the linear indicator with the same color.
KSP ("Kotlin Symbol Processing") is a tool for efficient annotation processing in Kotlin, providing faster code generation and symbol manipulation compared to KAPT. Repository
Coil for Jetpack Compose is a library that it is responsible for loading the images asynchronous. (Coil Documentation, Repository)
Hilt Dependencies Injection is an Android library that simplifies dependency injection by using annotations to automatically manage and provide dependencies across components, built on top of Dagger. (Documentation)
MVVM with repository is an architecture where the Repository manages data sources (e.g., network, database), the ViewModel processes the data for the UI, and the View displays the UI, ensuring a clear separation of concerns.
UI State to initial, loading, loaded and error.
R8 enabled, is a code shrinker and obfuscator for Android that optimizes and reduces the size of APKs by removing unused code and resources, while also obfuscating the remaining code to improve security.
The percentage for showing the skills of each Pokémon is calculated using the PercentageWithAnimation built by @NicosNicolaou16.
Target SDK version: 35
Minimum SDK version: 28
Kotlin version: 2.0.21
Gradle version: 8.7.2
https://pokeapi.co/
https://github.com/PokeAPI/sprites (GitHub)
https://fvilarino.medium.com/shared-element-transitions-in-jetpack-compose-8f553078101e
https://getstream.io/blog/shared-element-compose/
https://medium.com/androiddevelopers/navigation-compose-meet-type-safety-e081fb3cf2f8
https://dribbble.com/shots/6540871-Pokedex-App# - Get some UI - not completely use it (CHECK THE LINK FOR THE DESIGN)