android之自定义动画

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

那么如何自定义动画呢?

首先需要定义一个类来继承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);
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值