A live wallpaper engine for Android that renders interactive HTML directly on your home screen.
Loomview is an open-source Android live wallpaper app that lets you set any HTML file as your home screen wallpaper. If it runs in a browser, it runs on your wallpaper.
- Particles, WebGL shaders, canvas animations — anything web-based works.
- Touch-reactive — your wallpaper can receive and respond to finger touches.
- Fully offline — files are loaded directly from your device via the Storage Access Framework. No cloud, no tracking.
Demo.webm
If you're interested in the live wallpaper effect shown in the screenshots, it was created using another project of mine. Feel free to check it out: https://bokehdepthstudio.com
- 🌐 Renders HTML/CSS/JavaScript via the system WebView (Chromium)
- 🎨 Built-in file browser with grid/list view, favorites, and recents
- ⚙️ Render quality settings (Native / Standard / Saver) and FPS cap
- 🔋 Auto-downgrade on low battery
- 🌙 Light / Dark / System theme
- 🌍 Multilingual (English, Traditional Chinese)
- 🖼️ Gradient thumbnail previews in the system wallpaper picker
- Android 8.0 (API 26) or higher
- Android Studio Hedgehog or newer (to build from source)
-
Clone the repository:
git clone https://github.com/YOUR_USERNAME/loomview.git cd loomview -
Open the project in Android Studio.
-
Let Gradle sync automatically.
-
Click Run ▶ to build and install on your device or emulator.
Note: The app uses the Storage Access Framework (SAF) — no
READ_EXTERNAL_STORAGEpermission is required. HTML files are picked via the system file picker.
Loomview is a 100% native Android app built with modern Android best practices:
| Layer | Technology |
|---|---|
| UI | Jetpack Compose + Material 3 |
| Live Wallpaper Engine | WallpaperService + WebView + VirtualDisplay |
| Data Persistence | Room (file records) + DataStore (settings) |
| Dependency Injection | Hilt |
| Image Loading | Coil |
| File Access | Storage Access Framework (SAF) |
The core challenge is rendering a hardware-accelerated WebView (with WebGL support) inside a WallpaperService, which normally does not provide a window for hardware acceleration.
Loomview solves this using the Presentation + VirtualDisplay pattern:
- A
VirtualDisplayis created mirroring the physical screen dimensions. - A
Presentationwindow is attached to it, providing a proper hardware-acceleratedWindow. - The
WebViewis hosted inside thisPresentation, enabling full WebGL support. - The rendered output flows from the
VirtualDisplayto the wallpaper surface.
Contributions, issues, and feature requests are welcome! Feel free to open an issue or submit a pull request.
Copyright 2026 Loomview Contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0