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)