ParticlesDrawable

Draws random flying particles in space forming constellations.

Min API level 9.

Contains:

  • ParticlesDrawable, which is an Animatable Drawable.
  • ParticlesView, which is a View.

Both have the same public methods for customization and may be inflated using the same customization xml attributes.

Add to your project

Maven Central

dependencies {
    compile 'com.github.doctoror.particlesdrawable:library:[version]'
}

Screenshots

ParticlesDrawable

Usage

ParticlesDrawable usage example

private final ParticlesDrawable mDrawable = new ParticlesDrawable();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_demo);
    findViewById(R.id.view).setBackground(mDrawable);
}

@Override
protected void onStart() {
    super.onStart();
    mDrawable.start();
}

@Override
protected void onStop() {
    super.onStop();
    mDrawable.stop();
}

Customization

Here is a list of all attributes, set with default values

<com.doctoror.particlesdrawable.ParticlesView
    app:minDotRadius="1dp"
    app:maxDotRadius="3dp"
    app:lineThickness="1dp"
    app:lineDistance="86dp"
    app:numDots="60"
    app:dotColor="@android:color/white"
    app:lineColor="@android:color/white"
    app:frameDelayMillis="10"
    app:stepMultiplier="1"/>

The conventional getters and setters are also available.

Since API 24, you may also customize the Drawable in xml. For example, create
drawable-v24/particles_120dots.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Some versions of Android Studio may show false warning,
"Element drawable must be declared", but it works fine when
compiling and running -->
<drawable
    class="com.doctoror.particlesdrawable.ParticlesDrawable"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:numDots="120"/>

And inflate, like

mDrawable = (ParticlesDrawable) ContextCompat
        .getDrawable(this, R.drawable.particles_120dots);

Configuration Demo

Particle Constellations Live Wallpaper has a great configuration screen which allows you to quickly see through what can you do with the library:

GitHub