| package com.airbnb.lottie.animation.content; |
| |
| import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation; |
| import com.airbnb.lottie.model.content.ShapeTrimPath; |
| import com.airbnb.lottie.model.layer.BaseLayer; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| public class TrimPathContent implements Content, BaseKeyframeAnimation.AnimationListener { |
| |
| private final String name; |
| private final boolean hidden; |
| private final List<BaseKeyframeAnimation.AnimationListener> listeners = new ArrayList<>(); |
| private final ShapeTrimPath.Type type; |
| private final BaseKeyframeAnimation<?, Float> startAnimation; |
| private final BaseKeyframeAnimation<?, Float> endAnimation; |
| private final BaseKeyframeAnimation<?, Float> offsetAnimation; |
| |
| public TrimPathContent(BaseLayer layer, ShapeTrimPath trimPath) { |
| name = trimPath.getName(); |
| hidden = trimPath.isHidden(); |
| type = trimPath.getType(); |
| startAnimation = trimPath.getStart().createAnimation(); |
| endAnimation = trimPath.getEnd().createAnimation(); |
| offsetAnimation = trimPath.getOffset().createAnimation(); |
| |
| layer.addAnimation(startAnimation); |
| layer.addAnimation(endAnimation); |
| layer.addAnimation(offsetAnimation); |
| |
| startAnimation.addUpdateListener(this); |
| endAnimation.addUpdateListener(this); |
| offsetAnimation.addUpdateListener(this); |
| } |
| |
| @Override public void onValueChanged() { |
| for (int i = 0; i < listeners.size(); i++) { |
| listeners.get(i).onValueChanged(); |
| } |
| } |
| |
| @Override public void setContents(List<Content> contentsBefore, List<Content> contentsAfter) { |
| // Do nothing. |
| } |
| |
| @Override public String getName() { |
| return name; |
| } |
| |
| void addListener(BaseKeyframeAnimation.AnimationListener listener) { |
| listeners.add(listener); |
| } |
| |
| ShapeTrimPath.Type getType() { |
| return type; |
| } |
| |
| public BaseKeyframeAnimation<?, Float> getStart() { |
| return startAnimation; |
| } |
| |
| public BaseKeyframeAnimation<?, Float> getEnd() { |
| return endAnimation; |
| } |
| |
| public BaseKeyframeAnimation<?, Float> getOffset() { |
| return offsetAnimation; |
| } |
| |
| public boolean isHidden() { |
| return hidden; |
| } |
| } |