An open API service indexing awesome lists of open source software.

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

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

![android-mvvm-architecture](https://github.com/user-attachments/assets/9d9a470c-b022-4b78-94a1-6c60efa6fa24)

* **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.