/ExplodingComposable

Explosive dust effect animation for your composables!

Primary LanguageKotlinApache License 2.0Apache-2.0

💢 Exploding Composable

A Jetpack Compose utility library to add explosive dust effect animation to any composable

Based on ExplosionField by @tyrantgit

💻 Installation

  1. Add this to build.gradle of project gradle dependency
allprojects {
	repositories {
		...
 		maven { url 'https://jitpack.io' }
	}
}
  1. In build.gradle of app module, include this dependency
implementation "com.github.omkar-tenkale:ExplodingComposable:1.0.1"

Find latest version and changelogs in the releases.


❓ Usage

Wrap the content to explode in Explodable and trigger the explosion with explosionController.explode()

val explosionController = rememberExplosionController()

Explodable(controller = explosionController) {
    //Content to explode
    Box(modifier = Modifier
        .size(100.dp)
        .background(Color.Black)
        .clickable { explosionController.explode() })
}

🎨 Customization

ExplodingComposable offers a variety of customizations

val explosionController = rememberExplosionController()

Explodable(
    //Standard compose modifier
    modifier = Modifier,

    // Control the explosion state with an instance of ExplosionController
    // You can access it using rememberExplosionController() method
    // Provides methods controller.explode() and controller.reset()
    controller = explosionController,

    // Control the animation with these params
    animationSpec = ExplosionAnimationSpec(
        // The higher the number, the bigger the explosion
        explosionPower = 2f,
        // Duration for the particle explosion
        explosionDurationMs = 750,
        // Duration for the shake effect before explosion
        shakeDurationMs = 250
    ),

    // Callback to fire when explosion is finished
    onExplode = {
                
    },

    // To control the explosion manually, use this param [0f-1f]
    currentProgress = progress,

    // The composable to explode
    content = {
        
    }
)

📱 Demo

Download the sample app or explore the sample project

How it Works 🔧

Curious about how the library works under the hood? Check out this in-depth Medium article for all the details

Discuss 💬

Have any questions, doubts or want to present your opinions, views? You're always welcome. You can start a discussion

📃 License

Licensed under Apache license 2.0

This work is derived from ExplosionField