2.6.0

Features and Improvements

  • Deprecated LottieComposition.Factory in favor of LottieCompositionFactory.
    • The new factory methods make it easier to catch exceptions by separating out success and failure handlers. Previously, catching exceptions was impossible and would crash your app.
    • InputStreams are now always closed even if you use the old APIs. Please be aware if you were using this while upgrading.
  • [Sample App] Added the ability to load a file from assets.
  • Added support for miter limit.

2.5.7

  • Reapply min/max frame once composition is loaded (#827).
  • Fixed a bug that would ignore setting minFrame to 0 before the composition was set (#820).
  • Prevented Lottie from drawing a recycled bitmap (#828).

2.5.6

  • Added support for targeting Android P
  • Fixed a potential dangling Choreographer callback (#775)

2.5.5

  • Fixed end times for layers/animations. Before, if the layer/animation out frame was 20, it would fully render frame 20. This is incorrect. The last rendered frame should be 19.999... in this case. This should make Lottie reflect After Effects more accurately. However, if you are getting the frame in onAnimationEnd or onAnimationRepeat, it will be one less than it used to be.
  • Added support for base64 encoded images directly in the json instead of the filename. They are 33% larger than their equivalent image file but enables you to have images with a single file.
  • Fixed a lint error about KeyPath visibility.
  • A few min/max progress bug fixes.
  • Prevent autoPlay from starting before the animation was attached to the window. This caused animations in a RecyclerView to start playing before they were on screen.

2.5.4

  • You can now call playAnimation() from onAnimationEnd
  • Min/Max frames are clipped to the composition start/end
  • setProgress takes into account start and end frame

2.5.2

Features and Improvements

  • Totally new sample app!
    • Rebuilt from the ground up.
    • Lottiefiles integration
    • Render times per layer
    • Can open zip files with images from lottiefiles, even with qr scanning.
    • Change speed

Bugs Fixed

  • Fixed a regression with ellipse direction

2.5.1

Features and Improvements

  • Removed framerate restriction introduced in 2.5.0 that caused Lottie to attempt to render at the After Effects framerate. This caused animations to appear unexpectedly janky in most cases.

Bugs Fixed

  • Many minor bug fixes around setting min/max frames
  • Removed @RestrictTo on LottieValueCallback
  • Improved thread safety of animation listeners
  • Fixed looping when the animation speed is reversed

2.5.0

Features and Improvements

  • Added the ability to dynamically change properties at runtime. See docs for more info. This feature removed the existing APIs for changing the color dynamically with a color filter. Refer to the docs for migration info from existing ColorFilter APIs.
  • Added a setRepeatMode and setRepeatCount (Thanks Fabio Nuno!).
  • Completely overhauled json deserialization. Deserializing a composition takes half as long and can deserialize much larger json files (tested 50mb) without ooming.
  • Overhauled the underlying time animator. It now:
    • More accurately handles setFrame/getFrame/minFrame/maxFrame APIs. There were cases where they could be off by one before.
    • Renders at the fps specified by After Effects.
    • Added docs and clearer rules around animatedValue and animatedFraction in animator callbacks.
  • API to remove all animator listeners.
  • Adhere to the Animatable interface.
  • Bumped the minSdk from 14 to 16 to use Choreographer in the animator mentioned above.

Bugs Fixed

  • Fixed a bug that made it difficult to chain animations in onAnimationEnd callbacks.
  • Fixed a regression with unknown masks modes.
  • Fixed a crash trying to recycle a null bitmap.
  • Fixed a bug when an opacity animation time interpolator was >1.

2.3.1

Features and Improvements

  • Expose LottieComposition#getImages() to aid in preloading images.
  • Added support for text baseline.

Bugs Fixed

  • Prevented a crash when setting min frame > previous max frame.
  • Fixed some bugs in subtract masks.
  • Fixed some animation clamping when an animation was longer than its parent and time stretched.
  • Stopped applying time stretch to a layer transform.

2.3.0

Features and Improvements

  • Animator fixes:
    • Previously, some usages of lottie animator apis/api listeners would cause unexpected behavior, especially calling apis from listener callbacks.
    • This is breaking change if you use playAnimation(start, end). It has been removed in favor of explicit methods for setMinFrame/Progress, setMaxFrame/Progress and setMinAndMaxFrame/Progress followed by an explicit call to playAnimation or resumeAnimation.
    • reverseAnimation and resumeReverseAnimation apis have been removed in favor of play and resume with speed < 0.
    • If you have created hack around these limitations or complex animator chaining, please test your animations after updating.
  • Set an animation from R.raw (res/raw) if you want static references to your animation files. This can help prevent mismatches between api calls and file names. Thanks @cyrilmottier!
  • Support for ellipse direction.
  • Expose image directory name if set from bodymovin.

Bugs Fixed

  • Fixed a bug with animations that use both mattes and time stretch.
  • Fixed a few keyframe issues where keyframe start/end values would be off by 1 frame.

2.2.5

Bugs Fixed

  • Call onAnimationEnd when system animations are disabled.

2.2.4

Bugs Fixed

  • Improved the reliability of scaling and using ImageView scale types.
  • Fixed a clipping issue with precomps.
  • Fixed an ArrayIndexOutOfBounds crash in the interpolator cache.

2.2.3

Bugs Fixed

  • Fixed some issues with progress and resume
  • Fixed a StackOverflowErrors when animations are disabled
  • Fixed a NPE in Keyframe.Factory

2.2.1

Features and Improvements

  • Text now supports opacity.

Bugs Fixed

  • Fixed a couple of couple of concurrency crashes.
  • Fixed a crash when animations are disabled.
  • Fixed a crash for letters with no shapes.

2.2.0

Features and Improvements

  • Added play(startFrame, endFrame) and play(startProgress, endProgress).
  • Added the ability to set a minimum and maximum frame/progress for a given animation.
  • Made WeakRef the default cache strategy.

Bugs Fixed

  • Cancel loading animations when non-Lottie animations are set.

2.1.2

Bugs Fixed

  • Reduced memory footprint.
  • Allowed animations with masks and mattes to scale larger than their view.
  • Respect hardware acceleration when async loading a composition.
  • Fixed a gradient point counting issue.
  • Fixed a trim path issue.

2.1.0

Features and Improvements

  • Added support for animated text (glyphs and fonts)
  • Enabled text to be set dynamically
  • Added support for repeaters
  • Added support for time stretching
  • Added support for work area (trimming start and end frames)
  • Added support for mask opacity
  • Migrated the sample app to Kotlin
  • Added a real time render performance graph in the sample app
  • Added many systrace markers to improve performance tracking

2.0.0

Features and Improvements

  • Increased version number.
  • New animations from lottiefiles in the sample app.

Bugs Fixed

  • Minor trim path fix.
  • Minor gradient caching fix.

2.0.0-rc2

Features and Improvements

  • Paste json into the sample app.
  • Update a bitmap asset dynamically.
  • Set scale from xml.

Bugs Fixed

  • Resume no longer restarts the animation.
  • More lenient crashes and getCallback() checks.
  • Fewer addUpdateListener calls.
  • Fix cache strategy when it and the animation is set from xml.

2.0.0-rc1

Features and Improvements

  • Set a color filter with xml

Bugs Fixed

  • Prevent a rare crash when used from React Native.
  • Apply transformation to gradient fills.
  • Clip precomps to their bounds.
  • Prevent a crash with certain extreme keyframe values.
  • Fix the sample app for pre-lollipop.
  • Fix some pre-lollipop rendering bugs.

2.0.0-beta4

Features and Improvements

  • Added support to load an animation by scanning a qr code with a url to the json. All lottiefiles.com animations now have qr codes.
  • Added support for opacity stops in gradients.
  • Exposed setScale to arbitrarily scale up or down an animation. Added a slider in Lottie Sample to try it.

Bugs Fixed

  • Fixed several subtle trim path and dash pattern bugs.
  • Fixed a bug with path animations on Jelly Bean.
  • Fixed a bug that would incorrectly draw rounded rectangles.

2.0.0-beta3

Features and Improvements

  • Ground up rewrite of the rendering engine.
  • Vastly improved the performance of masks and mattes.
  • Support for fill types (non-zero or even-odd).
  • Support for gradient fills.
  • Some merge path support. Enable it with enableMergePathsForKitKatAndAbove and read the documentation before using it.
  • Support for multiple fills and strokes on shapes.
  • Exposed several package private methods on LottieAnimationView and LottieDrawable
  • Better support for hardware acceleration.
  • Added a ton of samples from lottiefiles.com to the sample app.

Bugs Fixed

  • Invalidate whatever drawable is set as the image drawable even if it's not LottieDrawable.

1.5.3

Features and Improvements

  • Added an image asset delegate so you can provide your own bitmaps from and sd card, for example.
  • Added an attr for setting progress.
  • Improved the performance of very large compositions by scaling them down to the screen size.
  • Separate APIs for play/cancel with or without setting progress.

Bugs Fixed

  • Several issues that could cause graphical corruption in masks or mattes.
  • LottieAnimationView checks whether it's current drawable is LottieDrawable for some calls.

1.5.2

Features and Improvements

  • Significantly improved memory usage when using masks or mattes. No more bitmaps!

Bugs Fixed

  • Further improved the compatibility of masks and mattes.

1.5.1

Features and Improvements
  • Use a thread pool executor for deserialization.
  • Allow setting a default cache strategy
  • Drop repeated calls to setComposition with the same composition.
Bugs Fixed
  • Fixed an image scaling issue.
  • Fixed a crash when leaving a screen with an image animation.
  • Fixed a crash when the json has no assets.

1.5.0

  • Precomps.
  • 60% performance and memory improvement for masks and mattes.
  • Images support. See documentation for more information.
  • Polystars.
  • Polygons.
  • Alpha inverted masks.
  • Subtract masks.
  • Trim paths on rectangles.
  • Variable speed (positive or negative).
  • Improved color interpolation (rgb -> gamma color space).

1.0.3

  • Make LottieDrawable public again.
  • Apply trim paths to shape fills.
  • Expose reverseAnimation in addition to playAnimation.

1.0.2

  • Added support for split dimension positions.
  • Fixed a crash with decimal opacity values.
  • Allow trim paths to rotate indefinitely.
  • Lowered the minSdk to 14 (ICS).
  • Prevent multiple caches from created on different threads.
  • Allow animations to show final state when system animations are disabled.

1.0.1 (2/2/2017)

  • Fixes an issue in which a parent layer will overwrite child alpha.
  • Fixes drawable invalidation when LottieDrawable is used outside of LottieAnimationView

1.0 (01/30/2017)

  • Initial release