首先,我来穿件一个存放效果的类,命名为WindowAnimation,
public class WindowAnimation extends Animation {
private int halfWidth;
private int halfHeight;
private int duration;
public WindowAnimation(int duration){
this.duration = duration;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
super.applyTransformation(interpolatedTime, t);
Matrix matrix = t.getMatrix();
matrix.preScale(interpolatedTime, interpolatedTime); //进行缩放,此时的interpolatedTime表示缩放的比例,interpolatedTime的值时0-1,开始时是0,结束时是1
matrix.preRotate(interpolatedTime * 360); //进行旋转
matrix.preTranslate(-halfWidth, -halfHeight); //改变动画的起始位置,把扩散点和起始点移到中间
matrix.postTranslate(halfWidth, halfHeight);
}
@Override
public void initialize(int width, int height, int parentWidth,
int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
this.setDuration(duration); //设置动画播放的时间
this.setFillAfter(true); //设置为true,动画结束的时候保持动画效果
this.halfHeight = height / 2; //动画对象的中点坐标
this.halfWidth = width / 2;
this.setInterpolator(new LinearInterpolator()); //线性动画(速率不变)
}
}
然后在Activity中,要跳转Activity的时候实现上面这个类中的方法就行:
/**
* 切换到指定activity
* @param activityId
* @param intent
*/
public void toActivity(String activityId,Intent intent) {
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
View view = getLocalActivityManager().startActivity(activityId, intent).getDecorView();
//切换activity时显示的动画效果
view.setAnimation(new WindowAnimation(500));
mViewFlipper.removeAllViews();
mViewFlipper.addView(view);
mViewFlipper.showNext();
}
下面是我直接摘抄他人的实例,作为参考: