LifeDots
A beautiful live wallpaper that visualizes your year, one dot at a time.
Features • Installation • Customization • Contributing
About
LifeDots transforms your home screen into a meaningful reminder of time's passage. Each dot represents a day — filled dots are days lived, empty dots are days yet to come, and today pulses with possibility.
Inspired by the concept of time visualization and mindful living, LifeDots helps you appreciate each day while keeping perspective on the year as a whole.
"The proper function of man is to live, not to exist." — Jack London
Features
🆕 Life in Weeks (Memento Mori)
Visualize your entire lifespan week by week, inspired by the classic Memento Mori calendar:
- Time Scale switcher: seamlessly toggle between Year in Days (365 days) and Life in Weeks (52 weeks × expected lifespan)
- Precise birth date tracker with quick decade & multi-year date picker
- Customizable life expectancy (50 to 100 years, e.g., 80 years = 4,160 weeks)
- Lived weeks filled, current week distinctly highlighted, future weeks outlined
- Mid-year split (26 + gap + 26 weeks) matching classic Memento Mori poster layouts
- Year marker numbers (5, 10, 15... 80) along the edge
- Header title ("MEMENTO MORI" with authentic Roman serif typography)
- Footer philosophical quote (Seneca quote or custom reflection)
- Life progress tracking: see % of life lived and weeks remaining in preview, settings, and wallpaper
Core Visualization
- 365/366 dots representing each day of the year
- Today highlighting with customizable accent color
- Multiple view modes: Continuous grid, Monthly sections, or Calendar layout
- Real-time updates at midnight
Themes & Colors
- Light, Dark, and AMOLED themes
- Fully custom colors for background, filled dots, empty dots, and today
- Adjustable transparency for filled and empty dots independently
Dot Customization
- 4 shapes: Circle, Square, Rounded Square, Diamond
- 5 sizes: Tiny to Huge
- 4 grid densities: Compact to Spacious
- 6 styles: Flat, Gradient, Outlined, Soft Glow, Neon, Embossed
🆕 Animations
- 6 animation types: Fade In, Pulse, Wave, Breathe, Ripple, Cascade
- Adjustable speed and intensity
- Battery-conscious implementation
🆕 Glass Effects
- 5 frosted glass styles: Light Frost, Heavy Frost, Acrylic, Crystal, Ice
- Customizable blur, opacity, and tint color
- Beautiful layered aesthetics
🆕 Tree Growth Mode
Replace dots with a growing tree that represents your year:
- 5 tree styles: Simple, Detailed, Bonsai, Sakura, Willow
- Custom colors for trunk, leaves, and blossoms
- Animated falling petals (Sakura)
- Swaying branches (Willow)
🆕 Fluid Backgrounds
- 5 animated backgrounds: Water, Lava, Mercury, Plasma, Aurora
- Adjustable flow speed, turbulence, and color intensity
- Smooth 60fps animations
Additional Features
- Background images with blur and opacity controls
- Year / Life Progress & Countdown — view completion percentage and remaining days/weeks with customizable format, decimal precision, position, font size, alignment, and color
- Footer text with custom message, font size, alignment, and color (supports dynamic tags like
{percent},{remaining},{passed},{total},{age}) - Goal countdown — add important dates with countdown display
- Position & scale controls for perfect placement
Installation
From Releases
- Download the latest APK from Releases
- Install on your Android device
- Long-press home screen → Wallpapers → Live Wallpapers → LifeDots
Build from Source
Prerequisites:
- Android Studio Hedgehog or later
- JDK 17 or higher
- Android SDK 34+
# Clone the repository
git clone https://github.com/yourusername/LifeDots.git
# Open in Android Studio
cd LifeDots
# Build debug APK
./gradlew assembleDebug
# Or install directly to connected device
./gradlew installDebug
---
Customization
View Modes
┌────────────┬──────────────────────────────────────────┐
│ Mode │ Description │
├────────────┼──────────────────────────────────────────┤
│ Continuous │ All 365 dots in a seamless grid │
├────────────┼──────────────────────────────────────────┤
│ Monthly │ Dots grouped by month with labels │
├────────────┼──────────────────────────────────────────┤
│ Calendar │ Traditional calendar layout (3x4 or 4x3) │
└────────────┴──────────────────────────────────────────┘
Dot Styles
┌───────────┬────────────────────────────┐
│ Style │ Effect │
├───────────┼────────────────────────────┤
│ Flat │ Solid color, clean look │
├───────────┼────────────────────────────┤
│ Gradient │ Subtle 3D shading │
├───────────┼────────────────────────────┤
│ Outlined │ Hollow dots with border │
├───────────┼────────────────────────────┤
│ Soft Glow │ Gentle halo effect │
├───────────┼────────────────────────────┤
│ Neon │ Vibrant glowing edges │
├───────────┼────────────────────────────┤
│ Embossed │ Raised, tactile appearance │
└───────────┴────────────────────────────┘
Tree Styles
┌──────────┬─────────────────────────────────────┐
│ Style │ Description │
├──────────┼─────────────────────────────────────┤
│ Simple │ Classic evergreen silhouette │
├──────────┼─────────────────────────────────────┤
│ Detailed │ Realistic oak with branches │
├──────────┼─────────────────────────────────────┤
│ Bonsai │ Elegant miniature with pot │
├──────────┼─────────────────────────────────────┤
│ Sakura │ Cherry blossoms with falling petals │
├──────────┼─────────────────────────────────────┤
│ Willow │ Graceful weeping branches │
└──────────┴─────────────────────────────────────┘
---
## Architecture
```text
app/
├── src/main/java/com/example/lifedots/
│ ├── MainActivity.kt # App launcher & onboarding preview
│ ├── SettingsActivity.kt # Compose UI settings orchestrator
│ ├── preferences/
│ │ ├── WallpaperModels.kt # Domain models, progress calculators & enums
│ │ └── LifeDotsPreferences.kt # SharedPreferences persistence & StateFlow
│ ├── wallpaper/
│ │ ├── LifeDotsWallpaperService.kt # Live wallpaper engine lifecycle & orchestration
│ │ └── renderer/ # Specialized visual effect & layout renderers
│ │ ├── DotGridRenderer.kt # Grid layout, view modes & styled dot rendering
│ │ ├── TreeEffectRenderer.kt # Seasonal tree growth simulation & species
│ │ ├── FluidEffectRenderer.kt # Water, lava, mercury, plasma & aurora effects
│ │ ├── GlassEffectRenderer.kt # Frosted glass, acrylic & ice effect renderer
│ │ ├── OverlayTextRenderer.kt # Title, quote, footer, goals & progress text
│ │ └── WallpaperRendererModels.kt # ThemeColors, GridConfig & DotType models
│ ├── receiver/
│ │ └── DateChangeReceiver.kt # Midnight & date change broadcast receiver
│ ├── util/
│ │ └── ImageUtils.kt # Bitmap decoding, scaling & blur utilities
│ └── ui/
│ ├── components/ # Dialogs (ColorPicker, DatePicker, GoalEditor)
│ ├── settings/ # Modular settings sections & components
│ └── theme/ # Material 3 theming
Tech Stack
- Language: Kotlin 2.0
- UI Framework: Jetpack Compose (Settings)
- Wallpaper Engine: Android Canvas API
- State Management: SharedPreferences + StateFlow
- Serialization: Gson (for goals)
- Min SDK: 26 (Android 8.0)
- Target SDK: 35 (Android 15)
Performance
LifeDots is designed to be battery-efficient:
- Static mode: Near-zero battery impact
- Animations: Optimized render loop, pauses when not visible
- Fluid effects: 60fps with frame skipping on lower-end devices
- Background images: Cached and scaled appropriately
Roadmap
- Widgets for home screen
- Week/Month/Decade view modes
- Import/Export settings
- Wear OS companion app
- Additional tree species
- Particle effects
- Yearly themes (seasons)
Contributing
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (git checkout -b feature/amazing-feature)
- Commit your changes (git commit -m 'Add amazing feature')
- Push to the branch (git push origin feature/amazing-feature)
- Open a Pull Request
Guidelines
- Follow existing code style
- Write meaningful commit messages
- Test on multiple screen sizes
- Update documentation as needed
Ideas for Contribution
- New dot shapes or styles
- Additional tree/plant types
- Localization (translations)
- Accessibility improvements
- Performance optimizations
