/*
 * Copyright (c) 2014. Marshal Chen.
 */

package com.marshalchen.common.commonUtils.uiUtils;

import android.animation.Keyframe;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.view.View;
import com.marshalchen.common.R;


public class AnimationUtils {

    public static ObjectAnimator tada(View view) {
        return tada(view, 1f);
    }

    public static ObjectAnimator tada(View view, float shakeFactor) {

        PropertyValuesHolder pvhScaleX = PropertyValuesHolder.ofKeyframe(View.SCALE_X,
                Keyframe.ofFloat(0f, 1f),
                Keyframe.ofFloat(.1f, .9f),
                Keyframe.ofFloat(.2f, .9f),
                Keyframe.ofFloat(.3f, 1.1f),
                Keyframe.ofFloat(.4f, 1.1f),
                Keyframe.ofFloat(.5f, 1.1f),
                Keyframe.ofFloat(.6f, 1.1f),
                Keyframe.ofFloat(.7f, 1.1f),
                Keyframe.ofFloat(.8f, 1.1f),
                Keyframe.ofFloat(.9f, 1.1f),
                Keyframe.ofFloat(1f, 1f)
        );

        PropertyValuesHolder pvhScaleY = PropertyValuesHolder.ofKeyframe(View.SCALE_Y,
                Keyframe.ofFloat(0f, 1f),
                Keyframe.ofFloat(.1f, .9f),
                Keyframe.ofFloat(.2f, .9f),
                Keyframe.ofFloat(.3f, 1.1f),
                Keyframe.ofFloat(.4f, 1.1f),
                Keyframe.ofFloat(.5f, 1.1f),
                Keyframe.ofFloat(.6f, 1.1f),
                Keyframe.ofFloat(.7f, 1.1f),
                Keyframe.ofFloat(.8f, 1.1f),
                Keyframe.ofFloat(.9f, 1.1f),
                Keyframe.ofFloat(1f, 1f)
        );

        PropertyValuesHolder pvhRotate = PropertyValuesHolder.ofKeyframe(View.ROTATION,
                Keyframe.ofFloat(0f, 0f),
                Keyframe.ofFloat(.1f, -3f * shakeFactor),
                Keyframe.ofFloat(.2f, -3f * shakeFactor),
                Keyframe.ofFloat(.3f, 3f * shakeFactor),
                Keyframe.ofFloat(.4f, -3f * shakeFactor),
                Keyframe.ofFloat(.5f, 3f * shakeFactor),
                Keyframe.ofFloat(.6f, -3f * shakeFactor),
                Keyframe.ofFloat(.7f, 3f * shakeFactor),
                Keyframe.ofFloat(.8f, -3f * shakeFactor),
                Keyframe.ofFloat(.9f, 3f * shakeFactor),
                Keyframe.ofFloat(1f, 0)
        );

        return ObjectAnimator.ofPropertyValuesHolder(view, pvhScaleX, pvhScaleY, pvhRotate).
                setDuration(1000);
    }

    public static ObjectAnimator nope(View view) {
        // int delta = view.getResources().getDimensionPixelOffset(R.dimen.spacing_medium);
        int delta = 40;
        PropertyValuesHolder pvhTranslateX = PropertyValuesHolder.ofKeyframe(View.TRANSLATION_X,
                Keyframe.ofFloat(0f, 0),
                Keyframe.ofFloat(.10f, -delta),
                Keyframe.ofFloat(.26f, delta),
                Keyframe.ofFloat(.42f, -delta),
                Keyframe.ofFloat(.58f, delta),
                Keyframe.ofFloat(.74f, -delta),
                Keyframe.ofFloat(.90f, delta),
                Keyframe.ofFloat(1f, 0f)
        );

        return ObjectAnimator.ofPropertyValuesHolder(view, pvhTranslateX).
                setDuration(500);
    }

}

@@ -233,84 +233,318 @@
 oid.
-view.View;%0Aimport com.marshalchen.common.R;%0A%0A%0Apublic class AnimationUtils %7B%0A
+annotation.TargetApi;%0Aimport android.os.Build;%0Aimport android.view.View;%0A%0A/**%0A * Some shake Animation%0A */%0A@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)%0Apublic class AnimationUtils %7B%0A    /**%0A     * @param view%0A     * @return%0A     * @see #wholeShake(android.view.View, float) ,default shakeFactor=1f%0A     */
 %0A   
@@ -565,36 +565,42 @@
  ObjectAnimator 
-tada
+wholeShake
 (View view) %7B%0A  
@@ -612,20 +612,26 @@
  return 
-tada
+wholeShake
 (view, 1
@@ -633,32 +633,157 @@
 ew, 1f);%0A    %7D%0A%0A
+    /**%0A     * Shake the view for whole direction%0A     *%0A     * @param view%0A     * @param shakeFactor%0A     * @return%0A     */%0A
     public stati
@@ -803,12 +803,18 @@
 tor 
-tada
+wholeShake
 (Vie
@@ -2844,24 +2844,122 @@
 00);%0A    %7D%0A%0A
+    /**%0A     * Shake the view from left to right%0A     *%0A     * @param view%0A     * @return%0A     */%0A
     public s
@@ -2983,11 +2983,21 @@
 tor 
-nop
+leftRightShak
 e(Vi

update animationutils