blob: e3a5a65bb016d2b42b62ed892b403f5ff7e5549a [file] [log] [blame]
package com.airbnb.lottie;
import java.util.ArrayList;
import java.util.List;
class TrimPathContent implements Content, BaseKeyframeAnimation.AnimationListener {
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;
TrimPathContent(BaseLayer layer, ShapeTrimPath trimPath) {
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.
}
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;
}
}