android之自定义动画

来源:互联网 发布:手机玩lol软件 编辑:程序博客网 时间:2024/04/30 12:56

有时候我们需要做一些高级的特效,普通的动画已经满足不了我们的需要了,为此我们需要自定义一些动画来使用。

那么如何自定义动画呢?

首先需要定义一个类来继承Animation,然后只需要实现它的applyTransformation方法就可以了。

这个方法有两个参数,一个是interpolatedTime就是插值器的时间因子,取值范围为0到1.0.

另一个是Transformation,它是矩阵的封装类,你可以通过这个类来获取当前的矩阵对象,然后通过

matrix对象的变换操作来实现其他效果的动画。

接下来我们举一个例子:

class ScrollAnimation extends Animation {    private float mCenterWidth;    private float mCenterHeight;    private Camera camera = new Camera();    @Override    public void initialize(int width, int height, int parentWidth, int parentHeight) {        super.initialize(width, height, parentWidth, parentHeight);        //设置默认时长        setDuration(2000);        //动画结束后保留状态        setFillAfter(true);        //设置默认插值器        setInterpolator(new BounceInterpolator());        mCenterHeight = width / 2;        mCenterWidth = width / 2;    }    @Override    protected void applyTransformation(float interpolatedTime, Transformation t) {        super.applyTransformation(interpolatedTime, t);        Matrix matrix = t.getMatrix();        camera.save();        camera.rotateY(30 * interpolatedTime);        camera.getMatrix(matrix);        camera.restore();        matrix.preTranslate(mCenterWidth, mCenterHeight);        matrix.postTranslate(-mCenterWidth, -mCenterHeight);    }}

0 0
原创粉丝点击