package me.weyye.todaynews.ui.view; import android.animation.Animator; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.content.Context; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import me.weyye.todaynews.R; /** * Created by Administrator on 2017/4/19 0019. */ public class LoadingFlashView extends FrameLayout { private View mFlashView; private ImageView mLoad1; private ImageView mLoad2; private ImageView mLoad3; private ImageView mLoad4; private AnimatorSet mAnimatorSet; public LoadingFlashView(Context context) { this(context, null); } public LoadingFlashView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public LoadingFlashView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context, attrs, defStyleAttr); } private void initView(Context context, AttributeSet attrs, int defStyleAttr) { mFlashView = LayoutInflater.from(context).inflate(R.layout.loading_flash_view, this); } @Override protected void onFinishInflate() { super.onFinishInflate(); mLoad1 = ((ImageView) findViewById(R.id.load1)); mLoad2 = ((ImageView) findViewById(R.id.load2)); mLoad3 = ((ImageView) findViewById(R.id.load3)); mLoad4 = ((ImageView) findViewById(R.id.load4)); } public void showLoading() { if (getVisibility() != View.VISIBLE) return; if (mAnimatorSet == null) initAnimation(); if (mAnimatorSet.isRunning() || mAnimatorSet.isStarted()) return; mAnimatorSet.start(); } public void hideLoading() { if (mAnimatorSet == null) return; if ((!mAnimatorSet.isRunning()) && (!mAnimatorSet.isStarted())) return; mAnimatorSet.removeAllListeners(); mAnimatorSet.cancel(); mAnimatorSet.end(); } private void initAnimation() { mAnimatorSet = new AnimatorSet(); List<ImageView> imageViewList = Arrays.asList(mLoad1, mLoad2, mLoad3, mLoad4); List<Animator> animatorList = new ArrayList<>(); for (int i = 0; i < 4; i++) { ObjectAnimator loadAnimator = ObjectAnimator.ofFloat(imageViewList.get(i), "alpha", new float[]{1.0F, 0.5F}).setDuration(500L); loadAnimator.setStartDelay(100 * i); loadAnimator.setRepeatMode(ObjectAnimator.REVERSE); loadAnimator.setRepeatCount(-1); animatorList.add(loadAnimator); } mAnimatorSet.playTogether(animatorList); // ObjectAnimator loadAnimator1 = ObjectAnimator.ofFloat(mLoad1, "alpha", new float[]{1.0F, 0.5F}).setDuration(500L); // ObjectAnimator loadAnimator2 = ObjectAnimator.ofFloat(mLoad2, "alpha", new float[]{1.0F, 0.5F}).setDuration(500L); // ObjectAnimator loadAnimator3 = ObjectAnimator.ofFloat(mLoad3, "alpha", new float[]{1.0F, 0.5F}).setDuration(500L); // ObjectAnimator loadAnimator4 = ObjectAnimator.ofFloat(mLoad4, "alpha", new float[]{1.0F, 0.5F}).setDuration(500L); // loadAnimator1.setStartDelay(0L); // loadAnimator2.setStartDelay(100L); // loadAnimator3.setStartDelay(200L); // loadAnimator4.setStartDelay(300L); // loadAnimator1.setRepeatMode(ObjectAnimator.REVERSE); // loadAnimator2.setRepeatMode(ObjectAnimator.REVERSE); // loadAnimator3.setRepeatMode(ObjectAnimator.REVERSE); // loadAnimator4.setRepeatMode(ObjectAnimator.REVERSE); // loadAnimator1.setRepeatCount(-1); // loadAnimator2.setRepeatCount(-1); // loadAnimator3.setRepeatCount(-1); // loadAnimator4.setRepeatCount(-1); // mAnimatorSet.playTogether(new Animator[]{loadAnimator1, loadAnimator2, loadAnimator3, loadAnimator4}); } public void setLoadingTheme(boolean isNight) { if (isNight) { PorterDuffColorFilter localPorterDuffColorFilter = new PorterDuffColorFilter(getResources().getColor(R.color.subscribe_category_bar_bg_night), PorterDuff.Mode.SRC_ATOP); mLoad1.setColorFilter(localPorterDuffColorFilter); mLoad2.setColorFilter(localPorterDuffColorFilter); mLoad3.setColorFilter(localPorterDuffColorFilter); mLoad4.setColorFilter(localPorterDuffColorFilter); } else { mLoad1.setColorFilter(null); mLoad2.setColorFilter(null); mLoad3.setColorFilter(null); mLoad4.setColorFilter(null); } } @Override public void setVisibility(int visibility) { super.setVisibility(visibility); if (visibility != VISIBLE) hideLoading(); } }