Class KeyPath


  • public class KeyPath
    extends Object
    Defines which content to target. The keypath can contain wildcards ('*') with match exactly 1 item. or globstars ('**') which match 0 or more items. or KeyPath.COMPOSITION to represent the root composition layer.

    For example, if your content were arranged like this: Gabriel (Shape Layer) Body (Shape Group) Left Hand (Shape) Fill (Fill) Transform (Transform) ... Brandon (Shape Layer) Body (Shape Group) Left Hand (Shape) Fill (Fill) Transform (Transform) ...

    You could: Match Gabriel left hand fill: new KeyPath("Gabriel", "Body", "Left Hand", "Fill"); Match Gabriel and Brandon's left hand fill: new KeyPath("*", "Body", Left Hand", "Fill"); Match anything with the name Fill: new KeyPath("**", "Fill"); Target the the root composition layer: KeyPath.COMPOSITION

    NOTE: Content that are part of merge paths or repeaters cannot currently be resolved with a KeyPath. This may be fixed in the future.

    • Field Detail

      • COMPOSITION

        public static final KeyPath COMPOSITION
        A singleton KeyPath that targets on the root composition layer. This is useful if you want to apply transformer to the animation as a whole.
    • Constructor Detail

      • KeyPath

        public KeyPath​(String... keys)
    • Method Detail

      • addKey

        @CheckResult
        public KeyPath addKey​(String key)
        Returns a new KeyPath with the key added. This is used during keypath resolution. Children normally don't know about all of their parent elements so this is used to keep track of the fully qualified keypath. This returns a key keypath because during resolution, the full keypath element tree is walked and if this modified the original copy, it would remain after popping back up the element tree.
      • getResolvedElement

        @Nullable
        public KeyPathElement getResolvedElement()
        Returns a KeyPathElement that this has been resolved to. KeyPaths get resolved with resolveKeyPath on LottieDrawable or LottieAnimationView.
      • matches

        public boolean matches​(String key,
                               int depth)
        Returns whether they key matches at the specified depth.
      • incrementDepthBy

        public int incrementDepthBy​(String key,
                                    int depth)
        For a given key and depth, returns how much the depth should be incremented by when resolving a keypath to children.

        This can be 0 or 2 when there is a globstar and the next key either matches or doesn't match the current key.

      • fullyResolvesTo

        public boolean fullyResolvesTo​(String key,
                                       int depth)
        Returns whether the key at specified depth is fully specific enough to match the full set of keys in this keypath.
      • propagateToChildren

        public boolean propagateToChildren​(String key,
                                           int depth)
        Returns whether the keypath resolution should propagate to children. Some keypaths resolve to content other than leaf contents (such as a layer or content group transform) so sometimes this will return false.
      • keysToString

        public String keysToString()
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object