Fun things about this project:
- Hilt for DI
- Compose for UI with reusable components
- MVVM architecture
- Coil for image loading
- Lifecycle aware state flow which retains state upon orientation change and back navigation
- Custom text field / search to show custom styl with boarder, vector icons, and animated visibility on clear icon button
- Scrolling header on search page and scrolling content on detail page
- Dynamic number of image columns based upon orientation
- Uses retrofit and pexels api to get images
- Demonstration of coroutines with suspend functions in image repository and within viewModel scope
- Each screen has loading state, error state, and main content, animated visibility
- One activity and multiple fragments, bundle to pass image id from search screen to detail screen
- Compose navigation
- Auto hide soft keyboard when hitting search button
- Auto hide search button when loading
- Sealed class of network result
- Splash icon
- View binding
- Unit tests
- View model tests
High quality screen recording here: https://drive.google.com/drive/folders/1p1-lH9LdhBFY06BxGJVWnxWdhO8vrJWH?usp=sharing
Unit test coverage report over 80% line coverage:
