Dynamic-animation is a new module introduced in revision 25.3.0 of the Android Support Library. It provides a small set of classes for making realistic physics-based view animations.
To get started, add the following dependency to your module’s build.gradle:
dependencies { compile 'com.android.support:support-dynamic-animation:25.3.0' }support-dynamic-animation:25.3.0 new physics-based animation library that provides a set of APIs for building animations that dynamically react to user input
Well, it won’t really be generic in a programming sense, but let’s start with how every SpringAnimation is made.
- Create a SpringAnimation object for your View with a specified ViewProperty
- Create a SpringForce object and set your desired parameters (which are described above).
- Apply the created SpringForce to your SpringAnimation.
- Start the animation.
private void startSpringAnimation(View view){ // create an animation for your view and set the property you want to animate SpringAnimation animation = new SpringAnimation(view, SpringAnimation.X); // create a spring with desired parameters SpringForce spring = new SpringForce(); // can also be passed directly in the constructor spring.setFinalPosition(100f); // optional, default is STIFFNESS_MEDIUM spring.setStiffness(SpringForce.STIFFNESS_LOW); // optional, default is DAMPING_RATIO_MEDIUM_BOUNCY spring.setDampingRatio(SpringForce.DAMPING_RATIO_HIGH_BOUNCY); // set your animation's spring animation.setSpring(spring); // animate! animation.start(); }Let’s say we have an arbitrary view positioned in the center of the screen We want to achieve the following behavior:
- Drag the view.
- Move it around.
- Release it.
- The view springs back to its original position.
There’s a rotating view on our screen which behaves like this:
- Grab the view.
- Spin it.
- Release it.
- The view spins back to its original position, again with a bounce.
As usual, there’s a view on our screen (it could be a photo) which has the following behavior:
- Grab it with 2 fingers.
- Do a typical pinching gesture to zoom in or out.
- Release it.
- The view scales back to its original size.
Feel free to fork, contribute and poke at the code.
Igor Havrylyuk (Graviton57)
