explaingit

willowtreeapps/spruce-android

Analysis updated 2026-07-03

3,704JavaAudience · developerComplexity · 2/5LicenseSetup · easy

TLDR

An Android Java library that coordinates animations across multiple views at once, handling order, timing, and delays automatically through a simple builder API.

Mindmap

mindmap
  root((spruce-android))
    What it does
      Coordinates view animations
      Controls order and timing
      Cascade and wave effects
    Sort functions
      Top to bottom
      Radial spread
      Random order
      Custom sort
    Animation types
      Fade in and out
      Shrink
      Custom Animator
    Setup
      Gradle dependency
      Builder API chain
      iOS companion repo
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Add polished wave-style entrance animations to list or card screens in an Android app.

USE CASE 2

Create radial or top-to-bottom cascading animations without manually calculating per-view delays.

USE CASE 3

Skip specific views from a group animation so they can animate independently.

USE CASE 4

Coordinate fade-in or custom Animator effects across all child views in a ViewGroup with one API call.

What is it built with?

JavaAndroidGradle

How does it compare?

willowtreeapps/spruce-androidmicroservices-patterns/ftgo-applicationspringdoc/springdoc-openapi
Stars3,7043,7033,706
LanguageJavaJavaJava
Setup difficultyeasyhardeasy
Complexity2/55/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 30min
Use freely for any purpose, including commercial use, as long as you keep the MIT copyright notice.

In plain English

Spruce is an Android library that helps coordinate animations across multiple views at the same time. On a screen with many elements, getting each item to animate at the right moment, in the right order, and with the right delay can become complicated to manage by hand. Spruce takes care of that coordination: you give it a group of views, specify how you want them sorted, and assign an animation, and the library figures out the timing for each individual element. The library works through two main concepts. The first is a sort function, which controls the order in which views begin animating. Eight built-in sort functions cover common patterns: top-to-bottom linear, radial (spreading outward from the center), random, cornered, inline, and a few variations. You can also write a custom sort function if none of the built-in options fits. The second concept is the animation itself, which uses Android's standard Animator class. Spruce includes a small set of ready-made animations (fade in, fade out, shrink) for common cases, but you can supply any custom Animator. The API is a builder chain: you attach a view group, a sort function, and one or more animators, then call .start(). An inter-object delay value controls how much time passes between each successive view starting its animation, which produces the wave or cascade effect that makes multi-view animations look polished. The library also includes a view exclusion feature for skipping specific views or list positions from the animation, useful when certain elements should animate independently or stay still. Spruce is added to an Android project through Gradle and has a companion iOS version in a separate repository. It is released under the MIT license.

Copy-paste prompts

Prompt 1
Using spruce-android, write a Java snippet that animates a RecyclerView's visible items top-to-bottom with a 30ms inter-object delay and a fade-in effect.
Prompt 2
Show me how to use a radial sort function in Spruce for Android to animate views spreading outward from the center of a ConstraintLayout.
Prompt 3
How do I exclude specific views from a Spruce animation group so they stay still while the rest cascade in?
Prompt 4
Write the Gradle dependency and minimal setup code to add spruce-android to a project and run a custom Animator on a group of CardViews.
Prompt 5
What is the difference between the built-in sort functions in spruce-android, and when should I use cornered vs inline vs radial?

Frequently asked questions

What is spruce-android?

An Android Java library that coordinates animations across multiple views at once, handling order, timing, and delays automatically through a simple builder API.

What language is spruce-android written in?

Mainly Java. The stack also includes Java, Android, Gradle.

What license does spruce-android use?

Use freely for any purpose, including commercial use, as long as you keep the MIT copyright notice.

How hard is spruce-android to set up?

Setup difficulty is rated easy, with roughly 30min to a first successful run.

Who is spruce-android for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub willowtreeapps on gitmyhub

Verify against the repo before relying on details.