package me.dkzwm.widget.srl.sample.header; import android.content.Context; import android.util.AttributeSet; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.airbnb.lottie.LottieAnimationView; import com.airbnb.lottie.LottieDrawable; import com.airbnb.lottie.RenderMode; import me.dkzwm.widget.srl.SmoothRefreshLayout; import me.dkzwm.widget.srl.extra.IRefreshView; import me.dkzwm.widget.srl.indicator.IIndicator; public class CustomLottieHeader extends LottieAnimationView implements IRefreshView<IIndicator> { public CustomLottieHeader(@NonNull Context context) { this(context, null); } public CustomLottieHeader(@NonNull Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public CustomLottieHeader( @NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public int getType() { return TYPE_HEADER; } @Override public int getStyle() { return STYLE_DEFAULT; } @Override public int getCustomHeight() { return 0; } @NonNull @Override public View getView() { return this; } @Override public void onFingerUp(SmoothRefreshLayout layout, IIndicator indicator) {} @Override public void onReset(SmoothRefreshLayout layout) {} @Override public void onRefreshPrepare(SmoothRefreshLayout layout) {} @Override public void onRefreshBegin(SmoothRefreshLayout layout, IIndicator indicator) { setRenderMode(RenderMode.HARDWARE); setRepeatMode(LottieDrawable.RESTART); setRepeatCount(LottieDrawable.INFINITE); playAnimation(); } @Override public void onRefreshComplete(SmoothRefreshLayout layout, boolean isSuccessful) { pauseAnimation(); } @Override public void onRefreshPositionChanged( SmoothRefreshLayout layout, byte status, IIndicator indicator) { if (status == SmoothRefreshLayout.SR_STATUS_PREPARE) { float progress = Math.min(1, indicator.getCurrentPercentOfRefreshOffset() % 1f); setProgress(progress); } } @Override public void onPureScrollPositionChanged( SmoothRefreshLayout layout, byte status, IIndicator indicator) {} }