This Android application, built with Kotlin and powered by the Unsplash API, allows users to explore and download stunning photos. It features random photo display, categorized photo lists, and detailed photo information, offering a seamless experience with modern technology integration.
wall2.webm
- MVVM Architecture
- Kotlin Coroutines
- Kotlin Flow
- LiveData
- Single activity pattern
- REST API
- Safe Args
- Kotlin Parcelize
- Pagination
- Shimmer RecyclerView
- Base Activity ,Fragment
- Dependency injection
Kotlin - First class and official programming language for Android development.
Shimmer RecyclerView - A custom Shimmer RecyclerView which adopt to list / grid transition automatically and also supports multiple view types while shimmering.
RotateView - For Rotate Image.
KenBurnsView - Android ImageViews animated by Ken Burns Effect.
Font Calligraphy - View Inflation you can intercept.
Retrofit + OkHttp - RESTful API and networking client.
Hilt - Dependency injection.
ViewBinding - View binding is a feature that allows you to more easily write code that interacts with views.
Android Architecture Components - A collections of libraries that help you design robust, testable, and maintainable apps.
ViewModel - UI related data holder, lifecycle aware.
Navigation component - Fragment routing handler.
Coroutines - Concurrency design pattern for asynchronous programming.
Flow - Stream of value that returns from suspend function.
Coil - Image loading.
DynamicSize - New units of measure for support all of screen devices.
-
View: The purpose of this layer is to inform the ViewModel about the user’s action. This layer observes the ViewModel and does not contain any kind of application logic.
-
ViewModel: It exposes those data streams which are relevant to the View. Moreover, it serves as a link between the Model and the View.
-
Model: This layer is responsible for the abstraction of the data sources. Model and ViewModel work together to get and save the data.
Have a project? DM me at
Special thanks to Mr Mohammad Nouri for providing the course that helped me.