Releases: airbnb/lottie-android
Releases · airbnb/lottie-android
3.4.1
3.4.0
Features and Improvements
- Added optional cache key parameters to url loading to enable skipping the cache.
- Added the ability to clear the Lottie cache via
LottieCompositionFactory.clearCache()
.
Bugs Fixed
- Properly pass in progress to ValueCallbacks.
- Clear existing ValueCallbacks if new ones overwrite old ones.
- Clip interpolators that might loop back on themself to render something very close rather than crashing.
- Fix time stretch + time remap when there is a start offset.
- Ensure that the first frame is rendered when a new composition is set even if it is not yet playing.
- Properly render Telegram stickers that use [0,1] for color but [0,255] for alpha.
- Ensure that LottieDrawable has the correct bounds when the composition updates before Marshmallow.
- Fully clear off screen buffers pre-pie to prevent artifacts.
- Play, not resume animations if they are played while not shown.
3.3.0
Features and Improvements
- Added a safeMode API that wraps draw with a try/catch. Can be used for problematic devices
#1449. - Add support for mask mode none.
Bugs Fixed
- Improve the performance of setProgress, particularly for animations with many non-animated
properties. - Fix a bug where animations may not resume on reattach if their state was saved after they were
detached.
3.2.0
3.1.0
Features and Improvements
- Breaking Change Replace JsonReader parsing APIs with InputStream variants to prevent
exposing Lottie's copy of Moshi's json parser. - Add the ability to catch all Lottie composition errors with
setFailureListener
and
resetFailureListener
(#1321). - Add the ability to set a fallback drawable res when Lottie fails to parse a composition or
load it from the internet. UsesetFallbackResource
from code orlottie_fallbackRes
from xml. - Add the ability to render opacity on the layer level rather than the shape level. View the docs
forsetApplyingOpacityToLayersEnabled
for more info. - Add the ability to use dynamic properties on text that wasn't already animated.
- Minor performance optimization when interpolating between colors.
Bugs Fixed
- Fix the renderMode attribute from getting overwritten.
- Prevent masks from either clipping edges or having thin borders pre-Pie.
- Apply animation scale to dash pattern offsets.
- Apply animation scale to gradient strokes.
- Fuzzy match content types when downloading animations from the internet.
- Prevent a StackOverflowException on KitKat.
- Prevent resume() from resuming when system animations are disabled.
- Prevent removeAllUpdateListeners() from removing internally used listeners.
- Fix some time remap calculations.
3.0.1
3.0.0
Features and Improvements
- Significant mask and matte performance improvements by only calling saveLayer() on the intersection bounds of the content and mask/matte.
- Added support for dynamic properties on rectangles, gradient colors, and gradient fill opacity.
- Added support for inverted and intersect masks.
- Improved support for multiple masks per layer.
- Added support for optimized bodymovin json with static transforms removed (v5.5.0+).
- Added support for optimized bodymovin json that will omit duplicated vertex out points to reduce json file size (v5.5.0+).
- Added support for centered, multiline text, and emojis.
- Added support for masked text.
- Added support for skew and skew angle in transforms.
- Added support for markers. You can now call
setMinFrame
,setMaxFrame
andsetMinAndMaxFrame
with a marker name. - Added support for hidden layers and properties (the eye button in After Effects).
- Added support for multiple trim paths to be applied on a shape.
- Removed all memory allocations during playback including autoboxing.
- Replaced
enableHardwareAcceleration
with a newsetRenderMode
API because it has a third (Automatic
) option. Refer to the docs for more info. - Added an XML attr for animation speed (lottie_speed).
- Removed the recycleBitmaps() API because it is not neccesary anymore.
- Prevented
invalidateSelf()
from being called and recalculating bounds many times per frame.
Bugs Fixed
- Only redraw the animation when a value changed. This will have a major impact on animations that are static for part of their playback.
- Optimized keyframes to recalculate values less frequently
- Optimized static identity transforms so their matrix doesn't get recalculated on every frame.
- Ensure that the last frame is played when setMaxFrame is called.
- Prevent strokes from drawing when the scale is 0.
- Prevented minFrame from being larger than maxFrame.
- Return the correct (previous) bitmap when updating the BitmapAssetManager.
- Properly use the in-memory cache for network animations.
- Prevented color animations from interpolating before/after the start/end colors even if their interpolator goes <0 or >1.
- Annotate
fetchBitmap()
as@Nullable
- Fixed a bug in the local file cache that would save it with the wrong extensions.
- Fixed a crash when an animation was missing gradient fill type.
- Prevent shapes that have different numbers of control points in different keyframes from crashing.
- Fixed an IndexOutOfBoundsException.
- Pause Lottie in onVisibilityChanged.
- Properly limited the LRU cache an enable its maximum size to be configured.
- Prevented the cache from returning null values after a key was cleared.
- Properly closed JsonReader in all cases.
- Fixed text alignment for scaled text when drawn using fonts.
- Use FutureTask rather than polling for composition parsing to complete.
- [Sample App] Fixed Lottiefiles integration.