package com.umeng.comm.ui.imagepicker.util;
import android.content.Context;
import android.graphics.drawable.AnimationDrawable;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;
import android.view.animation.TranslateAnimation;
/**
* @author chen
*
*/
public class AnimationUtil implements AnimationListener {
private Animation animation;
private OnAnimationEndListener animationEndListener;
private OnAnimationStartListener animationStartListener;
private OnAnimationRepeatListener animationRepeatListener;
public AnimationUtil(Context context, int resId) {
this.animation = AnimationUtils.loadAnimation(context, resId);
this.animation.setAnimationListener(this);
}
public AnimationUtil(float fromXDelta, float toXDelta, float fromYDelta,
float toYDelta) {
animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta,
toYDelta);
}
public AnimationUtil setStartOffSet(long startOffset) {
animation.setStartOffset(startOffset);
return this;
}
public AnimationUtil setInterpolator(Interpolator i) {
animation.setInterpolator(i);
return this;
}
public AnimationUtil setLinearInterpolator() {
animation.setInterpolator(new LinearInterpolator());
return this;
}
public void startAnimation(View view) {
view.startAnimation(animation);
}
public static void startAnimation(int resId, View view) {
view.setBackgroundResource(resId);
((AnimationDrawable) view.getBackground()).start();
}
public AnimationUtil setDuration(long durationMillis) {
animation.setDuration(durationMillis);
return this;
}
public AnimationUtil setFillAfter(boolean fillAfter) {
animation.setFillAfter(fillAfter);
return this;
}
public interface OnAnimationEndListener {
void onAnimationEnd(Animation animation);
}
public interface OnAnimationStartListener {
void onAnimationStart(Animation animation);
}
public interface OnAnimationRepeatListener {
void onAnimationRepeat(Animation animation);
}
public AnimationUtil setOnAnimationEndLinstener(
OnAnimationEndListener listener) {
this.animationEndListener = listener;
return this;
}
public AnimationUtil setOnAnimationStartLinstener(
OnAnimationStartListener listener) {
this.animationStartListener = listener;
return this;
}
public AnimationUtil setOnAnimationRepeatLinstener(
OnAnimationRepeatListener listener) {
this.animationRepeatListener = listener;
return this;
}
public void setAnimationListener(AnimationListener animationListener) {
animation.setAnimationListener(animationListener);
}
@Override
public void onAnimationStart(Animation animation) {
if (this.animationStartListener != null) {
this.animationStartListener.onAnimationStart(animation);
}
}
@Override
public void onAnimationEnd(Animation animation) {
if (this.animationEndListener != null) {
this.animationEndListener.onAnimationEnd(animation);
}
}
@Override
public void onAnimationRepeat(Animation animation) {
if (this.animationRepeatListener != null) {
this.animationRepeatListener.onAnimationRepeat(animation);
}
}
}