Android 动画效果大全

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值