Skip to content

neronguyenvn/Reorderable-Launcher

Repository files navigation

Reorderable Launcher App

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.

🔥 Motivation

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.

Overcoming the challenge of positioning new and moved apps, the launcher now dynamically reflects changes from RoomDB, updates app positions in UI layer and in Data layer asynchronously. The goal is to preload the pager to preload the main page as well as the adjacent pages.

🛠️ Technologies

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

📋 Features

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

🎥 Demo

screen-20240701-234344.webm

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages