blob: a1ccda4a91ab69ef37b56b9164279ad4e112cf5c [file] [log] [blame]
package com.airbnb.lottie;
import android.content.Context;
import android.graphics.Color;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
public class AnimationLinearLayout extends LinearLayout {
private static final float[] DEFAULT_ANIMATED_PROGRESS = {0f, 0.05f, 0.10f, 0.2f, 0.3f, 0.4f,
0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 0.95f, 1f};
private static final int DESIRED_WIDTH = 500;
public AnimationLinearLayout(Context context) {
super(context);
init();
}
private void init() {
setOrientation(VERTICAL);
setBackgroundColor(Color.WHITE);
for (int i = 0; i < DEFAULT_ANIMATED_PROGRESS.length; i++) {
addViewsFor(DEFAULT_ANIMATED_PROGRESS[i]);
}
}
private void addViewsFor(float progress) {
TextView textView = new TextView(getContext());
textView.setText(Float.toString(progress));
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12);
textView.setPadding(0, 24, 0, 24);
LinearLayout.LayoutParams lp = generateDefaultLayoutParams();
lp.gravity = Gravity.CENTER_HORIZONTAL;
addView(textView);
LottieAnimationView animationView = new LottieAnimationView(getContext());
animationView.setProgress(progress);
addView(animationView);
}
void setImageAssetsFolder(String folder) {
for (int i = getChildCount() - 1; i >= 0; i--) {
View child = getChildAt(i);
if (!(child instanceof LottieAnimationView)) {
continue;
}
((LottieAnimationView) child).setImageAssetsFolder(folder);
}
}
void setTextDelegate(TextDelegate textDelegate) {
for (int i = getChildCount() - 1; i >= 0; i--) {
View child = getChildAt(i);
if (!(child instanceof LottieAnimationView)) {
continue;
}
((LottieAnimationView) child).setTextDelegate(textDelegate);
}
}
void setComposition(LottieComposition composition) {
for (int i = getChildCount() - 1; i >= 0; i--) {
View child = getChildAt(i);
if (!(child instanceof LottieAnimationView)) {
continue;
}
((LottieAnimationView) child).setComposition(composition);
float scale = DESIRED_WIDTH / (float) composition.getBounds().width();
((LottieAnimationView) child).setScale(scale);
}
}
void recycleBitmaps() {
for (int i = getChildCount() - 1; i >= 0; i--) {
View child = getChildAt(i);
if (!(child instanceof LottieAnimationView)) {
continue;
}
((LottieAnimationView) child).recycleBitmaps();
}
}
}