A simple Android app that fetches and displays media files (images and videos) from the NoviSign API in a looping slideshow. The app includes cross-fade transitions and a display duration for each media item. Built with Kotlin, MVVM architecture, Jetpack Compose, and other modern Android libraries.
- Fetches playlists from the NoviSign API and displays each item (image or video) in a looping slideshow.
- Cross-fade animation between media items.
- Play/pause control for the slideshow.
- Customizable display duration for each media item.
- Progress bar indicating the time remaining for each item.
- Graceful error handling for network requests.
This project follows the MVVM (Model-View-ViewModel) architecture, ensuring a clear separation of concerns and making it easier to test and maintain.
- Model: Handles data and business logic. In this app,
PlaylistRepositoryfetches data from theNoviSignApi. - ViewModel:
SlideshowViewModelprovides the data to the UI and manages its state. It also controls the play/pause functionality. - View: Composables in
SlideshowScreenhandle the display and user interaction.
- Kotlin - Language for all the app’s code.
- Jetpack Compose - UI toolkit for building declarative UIs.
- Hilt - Dependency injection library.
- Coroutines - Asynchronous programming.
- StateFlow - State management and data flow.
- Retrofit - HTTP client for making API requests.
- ExoPlayer - For video playback.
- MockK - For mocking dependencies in tests.
- JUnit - Unit testing framework.
- Android Studio 4.2 or above
- Minimum Android SDK level 21
- Internet connection (for API requests)