package com.airbnb.lottiesplash; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.view.View; import android.widget.FrameLayout; import com.airbnb.lottie.LottieAnimationView; import com.airbnb.lottie.LottieComposition; import com.airbnb.lottie.OnCompositionLoadedListener; import java.util.ArrayList; import java.util.List; public class LottieFontViewGroup extends FrameLayout { private final List<LottieAnimationView> views = new ArrayList<>(); @Nullable private LottieAnimationView cursorView; public LottieFontViewGroup(Context context) { super(context); init(); } public LottieFontViewGroup(Context context, AttributeSet attrs) { super(context, attrs); init(); } public LottieFontViewGroup(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private int textSize; private void init() { final float density = getContext().getResources().getDisplayMetrics().density; textSize = (int)(density*120); for(int x=0; x<5; x++) { cursorView = new LottieAnimationView(getContext()); cursorView.setLayoutParams(new LayoutParams( textSize, textSize )); addView(cursorView); views.add(cursorView); } this.postDelayed(new Runnable() { @Override public void run() { LottieComposition.Factory.fromAssetFileName(getContext(), "A.json", new OnCompositionLoadedListener() { @Override public void onCompositionLoaded(LottieComposition composition) { views.get(0).setBackgroundDrawable(new ColorDrawable(0x112233)); views.get(0).setComposition(composition); views.get(0).playAnimation(); } }); } },300); this.postDelayed(new Runnable() { @Override public void run() { LottieComposition.Factory.fromAssetFileName(getContext(), "T.json", new OnCompositionLoadedListener() { @Override public void onCompositionLoaded(LottieComposition composition) { views.get(1).setComposition(composition); views.get(1).playAnimation(); } }); } },300); this.postDelayed(new Runnable() { @Override public void run() { LottieComposition.Factory.fromAssetFileName(getContext(), "L.json", new OnCompositionLoadedListener() { @Override public void onCompositionLoaded(LottieComposition composition) { views.get(2).setComposition(composition); views.get(2).playAnimation(); } }); } },300); this.postDelayed(new Runnable() { @Override public void run() { LottieComposition.Factory.fromAssetFileName(getContext(), "A.json", new OnCompositionLoadedListener() { @Override public void onCompositionLoaded(LottieComposition composition) { views.get(3).setComposition(composition); views.get(3).playAnimation(); } }); } },300); this.postDelayed(new Runnable() { @Override public void run() { LottieComposition.Factory.fromAssetFileName(getContext(), "S.json", new OnCompositionLoadedListener() { @Override public void onCompositionLoaded(LottieComposition composition) { views.get(4).setComposition(composition); views.get(4).playAnimation(); } }); } },300); } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { int currentX = (getWidth()-textSize/2*5)/2; int currentY = getPaddingLeft(); for (int i = 0; i < views.size(); i++) { View view = views.get(i); view.layout(currentX, currentY, currentX + view.getMeasuredWidth()/2, currentY + view.getMeasuredHeight()); currentX += view.getMeasuredWidth()/2; } } }