2011.10.18——— android 自定义Animation

2011.10.18——— android 自定义Animation

参考: http://www.ophonesdn.com/article/show/185



写一个简单的自定义动画的例子:
这个例子是在网上找得 但是我找不到网址了 抱歉





import android.graphics.Matrix;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.Transformation;


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) {
		System.out.println("applyTransformation: "+ interpolatedTime);
		super.applyTransformation(interpolatedTime, t);
		Matrix matrix = t.getMatrix();
		matrix.preScale(interpolatedTime, interpolatedTime,halfWidth,halfHeight); //进行缩放,此时的interpolatedTime表示缩放的比例,interpolatedTime的值时0-1,开始时是0,结束时是1
		matrix.preRotate(interpolatedTime * 360,halfWidth,halfHeight); //进行旋转
//		matrix.preTranslate(-halfWidth, -halfHeight); //改变动画的起始位置,把扩散点和起始点移到中间
//		matrix.postTranslate(halfWidth, halfHeight);
	}

	@Override
	public void initialize(int width, int height, int parentWidth,
			int parentHeight) {
		System.out.println("initialize");
		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()); //线性动画(速率不变)
	}

}


initialize这是一个回调函数告诉Animation目标View的大小参数,在这里可以初始化一些相关的参数,例如设置动画持续时间、设置Interpolator、设置动画的参考点等。
applyTransformation 在动画过程中 会不断的调用 每次调用参数interpolatedTime值都会变化,该参数从0渐变为1,当该参数为1时表明动画结束。



使用:

view.setAnimation(new WindowAnimation(2000));




效果如图:


2011.10.18——— android 自定义Animation


你可能感兴趣的:(android,animation)