Android library for using the Honeycomb (Android 3.0) animation API on all versions of the platform back to 1.0!
Animation prior to Honeycomb was very limited in what it could accomplish so in Android 3.x a new API was written. With only a change in imports, we are able to use a large subset of the new-style animation with exactly the same API.
This library also includes support for animating rotation, translation, alpha, and scale on platforms prior to Honeycomb!
Skip to the Usage section for implementation details.
Version 2.4.0 — 2012-06-24
ViewHelperclass which will delegate new
Viewproperty calls to their native counterparts when available.
Looking for an older version? Check here.
The API is exactly the same as the Honeycomb API, just change your imports to use
For example, to animate a
View vertically off of the screen you can use
ObjectAnimator.ofFloat(myObject, "translationY", -myObject.getHeight()).start();
If you're familiar with the animation API already you should notice that this is precisely what would be done with the native api. The only difference, however, is that we've imported
com.nineoldandroids.animation.ObjectAnimator at the top of the file instead of
Here's another example of a
View animating its own background to go from red to blue and then back again forever. You can see this animation in the 'Bouncing Balls' demo in the samples application.
ValueAnimator colorAnim = ObjectAnimator.ofInt(this, "backgroundColor", /*Red*/0xFFFF8080, /*Blue*/0xFF8080FF); colorAnim.setDuration(3000); colorAnim.setEvaluator(new ArgbEvaluator()); colorAnim.setRepeatCount(ValueAnimator.INFINITE); colorAnim.setRepeatMode(ValueAnimator.REVERSE); colorAnim.start();
This library includes compatibility implementations of almost all of the new properties which were introduced with Android 3.0 allowing you to perform very complex animations that work on every API level.
AnimatorSet set = new AnimatorSet(); set.playTogether( ObjectAnimator.ofFloat(myView, "rotationX", 0, 360), ObjectAnimator.ofFloat(myView, "rotationY", 0, 180), ObjectAnimator.ofFloat(myView, "rotation", 0, -90), ObjectAnimator.ofFloat(myView, "translationX", 0, 90), ObjectAnimator.ofFloat(myView, "translationY", 0, 90), ObjectAnimator.ofFloat(myView, "scaleX", 1, 1.5f), ObjectAnimator.ofFloat(myView, "scaleY", 1, 0.5f), ObjectAnimator.ofFloat(myView, "alpha", 1, 0.25f, 1) ); set.setDuration(5 * 1000).start();
You can also use a compatibility version of
ViewPropertyAnimator which allows animating views in a much more declarative manner
Button myButton = (Button)findViewById(R.id.myButton); //Note: in order to use the ViewPropertyAnimator like this add the following import: // import static com.nineoldandroids.view.ViewPropertyAnimator.animate; animate(myButton).setDuration(2000).rotationYBy(720).x(100).y(100);
There are some caveats to using this API on versions of Android prior to Honeycomb:
Propertyclass and its animation was introduced in Android 3.2 and is thus not included in this library. There is, however, a
com.nineoldandroids.util.Propertyclass which allows you to create custom properties on your own views for easier animation.
LayoutTransitionis not possible to implement prior to Android 3.0 and is not included.
For more examples please take a look at the source code to the samples.