您的位置:首页 > 移动开发 > Android开发

Android进阶学习-自定义动画(电视关闭效果)

2016-05-26 00:00 639 查看
效果图:



对于自定义动画,只需要重写Animation类的applyTransformation方法就可以了.

protected void applyTransformation(float interpolatedTime, Transformation t) {

}

其中interpolatedTime参数是差值器()的时间因子Interpolator,不同的差值器同一时间计算出来的是不一样的.此值是由当前动画完成的百分比和当前时间所对应的差值计算得来的.取值范围是0-1.我的理解就是下一阶段将要 完成整个动画的百分比,不知道是否正确.

第二个参数Transformation是矩阵的封装类,它封装了一下方法去操作矩阵.

所以可以写出关闭电视的动画类是这样的:

[code=plain]	class OffTVAnimation extends Animation {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
Matrix matrix = t.getMatrix();
matrix.preScale(1, 1 - interpolatedTime, view.getWidth() / 2, view.getHeight() / 2);
/**
* 使宽度不缩放,高度缩小最后是0.然后后面两个参数是按被缩放的view的中心点缩放
*/
view.setAlpha(1 - interpolatedTime);
}

@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
setDuration(200);
setInterpolator(new DecelerateInterpolator());
setFillAfter(true);
}
}

调用代码很简单:

[code=plain]		OffTVAnimation offTVAnimation = new OffTVAnimation();
view.startAnimation(offTVAnimation);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息