blob: 9dd77b202fe5c8de957007c80c5ca6dfd546db68 [file] [log] [blame]
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;
}
}