package com.photoselector.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);
}
/** �Զ���һ��Translate���͵�Animation */
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;
}
/** ����һ�������IJ����� */
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);
}
}
}