Reorderable Launcher is a streamlined and intuitive launcher application crafted using Kotlin and Jetpack Compose. Designed for ease of use, it intelligently arranges new apps to fill the available spaces on each page, ensuring a clean and organized home screen.
I started this project at my company's request to integrate user apps and other launcher features, as the WebView team already handles the home feature for both Android and iOS. I decided to continue the project on my own, focusing on Jetpack Compose, Pager, and PointerInput.
Milestone 1: Successfully tackled the dynamic positioning of new and moved apps, allowing the launcher to reflect changes from RoomDB and adjust app positions across both the UI and data layers asynchronously.
Next Goal: Streamline state and data updates in the ViewModel to make them more reactive, eliminating the need to manually stop and restart Flow collections.
-
UI: Built with Jetpack Compose and Coil for image loading. Memory cache images so don't have laggy when switch pages.
-
Architecture: MVVM Pattern, apply Clean Architecture principles, Reactive pattern.
-
Dependency Injection: Powered by Hilt.
-
Storage: Implements Room for store app item info and its position.
-
Dynamic Grid Layout: Automatically arranges apps in a grid layout, allowing for easy drag-and-drop reordering within and across pages.
-
Persistent Storage: Stores app position indexes and page indexes in Room DB.
-
Reactive Updates: Reflects real-time changes in app positions and updates both the data and presentation layers asynchronously.