https://github.com/hossein69ameri/wallpaperapp
This Kotlin-based Android app uses the Unsplash API to display random photos, browse by category, download images, and view photo details
https://github.com/hossein69ameri/wallpaperapp
android coil hilt kotlin mvvm pagination picture wallpaper wallpaper-app xml
Last synced: 2 months ago
JSON representation
This Kotlin-based Android app uses the Unsplash API to display random photos, browse by category, download images, and view photo details
- Host: GitHub
- URL: https://github.com/hossein69ameri/wallpaperapp
- Owner: hossein69ameri
- Created: 2024-10-10T10:08:03.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-10-16T06:47:22.000Z (over 1 year ago)
- Last Synced: 2025-03-02T10:41:52.082Z (over 1 year ago)
- Topics: android, coil, hilt, kotlin, mvvm, pagination, picture, wallpaper, wallpaper-app, xml
- Language: Kotlin
- Homepage:
- Size: 5.75 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WallpaperApp
This Android application, built with Kotlin and powered by the [Unsplash API](https://unsplash.com/), 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.
# Screen Shot
[wallpaper.webm](https://github.com/user-attachments/assets/71af986c-2ea2-419e-a6d7-d7a7147e8ef9)
# Technologies
* MVVM Architecture
* Kotlin Coroutines
* Kotlin Flow
* LiveData
* Single activity pattern
* REST API
* Safe Args
* Kotlin Parcelize
* Pagination
* Shimmer RecyclerView
* Base Activity ,Fragment
* Dependency injection
# Built with
[Kotlin](https://kotlinlang.org/) - First class and official programming language for Android development.
[Shimmer RecyclerView](https://github.com/omtodkar/ShimmerRecyclerView) - A custom Shimmer RecyclerView which adopt to list / grid transition automatically and also supports multiple view types while shimmering.
[RotateView](https://github.com/MrNouri/RotateView) - For Rotate Image.
[KenBurnsView](https://github.com/flavioarfaria/KenBurnsView) - Android ImageViews animated by Ken Burns Effect.
[Font Calligraphy](https://github.com/InflationX/ViewPump) - View Inflation you can intercept.
[Retrofit](https://square.github.io/retrofit/) + [OkHttp](https://square.github.io/okhttp/) - RESTful API and networking client.
[Hilt](https://dagger.dev/hilt/) - Dependency injection.
[ViewBinding](https://developer.android.com/topic/libraries/view-binding) - View binding is a feature that allows you to more easily write code that interacts with views.
[Android Architecture Components](https://developer.android.com/topic/libraries/architecture) - A collections of libraries that help you design robust, testable, and maintainable apps.
[ViewModel](https://developer.android.com/reference/androidx/lifecycle/ViewModel) - UI related data holder, lifecycle aware.
[Navigation component](https://developer.android.com/guide/navigation) - Fragment routing handler.
[Coroutines](https://developer.android.com/kotlin/coroutines) - Concurrency design pattern for asynchronous programming.
[Flow](https://developer.android.com/kotlin/flow) - Stream of value that returns from suspend function.
[Coil](https://github.com/coil-kt/coil) - Image loading.
[DynamicSize](https://github.com/MrNouri/DynamicSizes) - New units of measure for support all of screen devices.
# Architectures

* **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.
# Contact
Have a project? DM me at
hossein.arabameri69@gmail.com
# Acknowledgments
Special thanks to [Mr Mohammad Nouri](https://github.com/MrNouri) for providing the course that helped me.