• Stars
    star
    134
  • Rank 270,967 (Top 6 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created almost 2 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Explosive dust effect animation for your composables!

πŸ’’ Exploding Composable

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


πŸ’» 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