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;
	}
	
	
	

}