自定义Animation

//创建自定义动画
//创建Animation的子类
public class MyAnimation extends Animation {
int mWidth;
int mHeight;
private Camera mCamera;

//有必要的情况下,需要复写initialize()
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
    super.initialize(width, height, parentWidth, parentHeight);

    mWidth=width;
    mHeight=height;

    setDuration(500);
    setFillAfter(true);//为真,则保持最后的显示效果
    //设置默认插值器 效果是0到1;
    BounceInterpolator bounceInterpolator = new BounceInterpolator();
    setInterpolator(bounceInterpolator);

    mCamera = new Camera();
}
    //核心方法applyTransformation(),interpolatedTime是插值器,Transformation 通过其矩阵来实现动画
    @Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
//        super.applyTransformation(interpolatedTime, t);父类的applyTransformation是空实现,其四个子类才有具体的实现

    Matrix matrix = t.getMatrix();
/*        //通过修改matrix来实现电视机关闭的效果
    matrix.preScale(1,
            1-interpolatedTime,
            mWidth/2,mHeight/2);*/

    //Camera是3D轴修改的封装后的类,作用是修改  3D坐标轴
    mCamera.save();
    mCamera.rotateY(360*interpolatedTime);
    mCamera.getMatrix(matrix);
    mCamera.restore();//将修改后的效果作用到matrix上

    //开始和结束时候的矩阵
//        matrix.preTranslate(mWidth/2,mHeight/2);
    matrix.postTranslate(mWidth/2,mHeight/2);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值