import android.graphics.Matrix;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.Transformation;
public class TVOnAnimation extends Animation
{
private int halfWidth;
private int halfHeight;
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
setDuration(1000);
setFillAfter(true);
//View的中心点
halfWidth = width / 2;
halfHeight = height / 2;
setInterpolator(new AccelerateDecelerateInterpolator());
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t)
{
final Matrix matrix = t.getMatrix();
//前 1/5 的时间把view的横向拉伸到了1.5倍大小,纵坐标保持不变
if (interpolatedTime < 0.2)
{
matrix.preScale( 7.5f * interpolatedTime, 0.01f , halfWidth,halfHeight);
}
//后 4/5 的时间 做了两件事:
// 1.view的纵向拉伸到了原始大小
// 2.view的横向从1.5倍压缩到了原始大小
else
{
matrix.preScale(1 + 0.325f*(1 - interpolatedTime), interpolatedTime, halfWidth, halfHeight);
}
}
}
使用: view.setAnimation(new TVOnAnimation());
另附上电视关机动画: http://www.cnblogs.com/mudoot/articles/1985142.html