AnimationController.java:
各种动画效果:
public class AnimationController {
public static final int rela1 = Animation.RELATIVE_TO_SELF;
public static final int rela2 = Animation.RELATIVE_TO_PARENT;
public static final int Default = -1;
// public static final int Linear = 0;
// public static final int Accelerate = 1;
// public static final int Decelerate = 2;
// public static final int AccelerateDecelerate = 3;
// public static final int Bounce = 4;
// public static final int Overshoot = 5;
// public static final int Anticipate = 6;
// public static final int AnticipateOvershoot = 7;
private static class MyAnimationListener implements AnimationListener {
private View view;
public MyAnimationListener(View view) {
this.view = view;
}
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
this.view.setVisibility(View.GONE);
ViewGroup parent=(ViewGroup)this.view.getParent();
parent.removeView(view);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
}
private static void setEffect(Animation animation, int interpolatorType, long durationMillis, long delayMillis) {
switch (interpolatorType) {
case 0:
animation.setInterpolator(new LinearInterpolator());
break;
case 1:
animation.setInterpolator(new AccelerateInterpolator());
break;
case 2:
animation.setInterpolator(new DecelerateInterpolator());
break;
case 3:
animation.setInterpolator(new AccelerateDecelerateInterpolator());
break;
case 4:
animation.setInterpolator(new BounceInterpolator());
break;
case 5:
animation.setInterpolator(new OvershootInterpolator());
break;
case 6:
animation.setInterpolator(new AnticipateInterpolator());
break;
case 7:
animation.setInterpolator(new AnticipateOvershootInterpolator());
break;
default:
break;
}
animation.setDuration(durationMillis);
animation.setStartOffset(delayMillis);
}
private static void baseIn(View view, Animation animation, long durationMillis, long delayMillis) {
setEffect(animation, Default, durationMillis, delayMillis);
view.setVisibility(View.VISIBLE);
view.startAnimation(animation);
}
private static void baseOut(View view, Animation animation, long durationMillis, long delayMillis) {
setEffect(animation, Default, durationMillis, delayMillis);
animation.setAnimationListener(new MyAnimationListener(view));
view.startAnimation(animation);
}
public void show(View view) {
view.setVisibility(View.VISIBLE);
}
public void hide(View view) {
view.setVisibility(View.GONE);
}
public void transparent(View view) {
view.setVisibility(View.INVISIBLE);
}
public static void fadeIn(View view, long durationMillis, long delayMillis) {
AlphaAnimation animation = new AlphaAnimation(0, 1);
baseIn(view, animation, durationMillis, delayMillis);
}
public static void fadeOut(View view, long durationMillis, long delayMillis) {
AlphaAnimation animation = new AlphaAnimation(1, 0);
baseOut(view, animation, durationMillis, delayMillis);
}
public static void slideIn(View view, long durationMillis, long delayMillis) {
TranslateAnimation animation = new TranslateAnimation(rela2, 1, rela2, 0, rela2, 0, rela2, 0);
baseIn(view, animation, durationMillis, delayMillis);
}
public static void slideOut(View view, long durationMillis, long delayMillis) {
TranslateAnimation animation = new TranslateAnimation(rela2, 0, rela2, -1, rela2, 0, rela2, 0);
baseOut(view, animation, durationMillis, delayMillis);
}
public static void scaleIn(View view, long durationMillis, long delayMillis) {
ScaleAnimation animation = new ScaleAnimation(0, 1, 0, 1, rela2, 0.5f, rela2, 0.5f);
baseIn(view, animation, durationMillis, delayMillis);
}
public static void scaleOut(View view, long durationMillis, long delayMillis) {
ScaleAnimation animation = new ScaleAnimation(1, 0, 1, 0, rela2, 0.5f, rela2, 0.5f);
baseOut(view, animation, durationMillis, delayMillis);
}
public static void rotateIn(View view, long durationMillis, long delayMillis) {
RotateAnimation animation = new RotateAnimation(-90, 0, rela1, 0, rela1, 1);
baseIn(view, animation, durationMillis, delayMillis);
}
public static void rotateOut(View view, long durationMillis, long delayMillis) {
RotateAnimation animation = new RotateAnimation(0, 90, rela1, 0, rela1, 1);
baseOut(view, animation, durationMillis, delayMillis);
}
public static void scaleRotateIn(View view, long durationMillis, long delayMillis) {
ScaleAnimation animation1 = new ScaleAnimation(0, 1, 0, 1, rela1, 0.5f, rela1, 0.5f);
RotateAnimation animation2 = new RotateAnimation(0, 360, rela1, 0.5f, rela1, 0.5f);
AnimationSet animation = new AnimationSet(false);
animation.addAnimation(animation1);
animation.addAnimation(animation2);
baseIn(view, animation, durationMillis, delayMillis);
}
public static void scaleRotateOut(View view, long durationMillis, long delayMillis) {
ScaleAnimation animation1 = new ScaleAnimation(1, 0, 1, 0, rela1, 0.5f, rela1, 0.5f);
RotateAnimation animation2 = new RotateAnimation(0, 360, rela1, 0.5f, rela1, 0.5f);
AnimationSet animation = new AnimationSet(false);
animation.addAnimation(animation1);
animation.addAnimation(animation2);
baseOut(view, animation, durationMillis, delayMillis);
}
public static void slideFadeIn(View view, long durationMillis, long delayMillis) {
TranslateAnimation animation1 = new TranslateAnimation(rela2, 1, rela2, 0, rela2, 0, rela2, 0);
AlphaAnimation animation2 = new AlphaAnimation(0, 1);
AnimationSet animation = new AnimationSet(false);
animation.addAnimation(animation1);
animation.addAnimation(animation2);
baseIn(view, animation, durationMillis, delayMillis);
}
public static void slideFadeOut(View view, long durationMillis, long delayMillis) {
TranslateAnimation animation1 = new TranslateAnimation(rela2, 0, rela2, -1, rela2, 0, rela2, 0);
AlphaAnimation animation2 = new AlphaAnimation(1, 0);
AnimationSet animation = new AnimationSet(false);
animation.addAnimation(animation1);
animation.addAnimation(animation2);
baseOut(view, animation, durationMillis, delayMillis);
}