package com.xdroid.animation.anim; import com.xdroid.animation.base.AnimationBase; import com.xdroid.animation.interfaces.Duration; import android.animation.AnimatorSet; import android.animation.ArgbEvaluator; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.graphics.Color; import android.view.View; import android.view.animation.LinearInterpolator; /** * Color Animation ,can set up a View of the text color or background color transformation, etc * @author Robin * @since 2015-08-07 10:31:40 * */ public class ColorAnimation extends AnimationBase<ColorAnimation>{ private int[] values; private String propertiesName; /* * ================================================================== * Constructor * ================================================================== */ public ColorAnimation(View targetView) { this.targetView = targetView; interpolator = new LinearInterpolator(); duration = Duration.DURATION_LONG; listener = null; values = new int[]{ Color.BLACK,Color.WHITE }; propertiesName = "backgroundColor"; } /* * ================================================================== * Override CombinableMethod * ================================================================== */ @Override public void animate() { createAnimatorSet().start(); } @Override public AnimatorSet createAnimatorSet() { ValueAnimator colorAnim = ObjectAnimator.ofInt(targetView, propertiesName, values); colorAnim.setDuration(3000); colorAnim.setEvaluator(new ArgbEvaluator()); AnimatorSet colorSet = new AnimatorSet(); colorSet.play(colorAnim); if (listener != null) { colorSet.addListener(listener); } return colorSet; } /* * ================================================================== * Getter And Setter * ================================================================== */ public int[] getValues() { return values; } public ColorAnimation setValues(int[] values) { this.values = values; return this; } public String getPropertiesName() { return propertiesName; } public ColorAnimation setPropertiesName(String propertiesName) { this.propertiesName = propertiesName; return this; } }