自定义动画

自定义动画,四种动画效果都是要继承 Animation

public class CustomAnimation extends Animation {

    /**
     * 粗略测试一下,宽高 *3 ,如果父容器宽高是屏幕大小,则是屏幕大小
     * @param width        该容器的宽
     * @param height       该容器的高
     * @param parentWidth  父容器的宽
     * @param parentHeight 父容器的高
     */
    @Override
    public void initialize(int width, int height, int parentWidth, int parentHeight) {
        Log.i("test", width + "        " + height + "     " + parentWidth + "        " + parentHeight);
        super.initialize(width, height, parentWidth, parentHeight);
    }

    /**
     * 启动此类就会不断的执行 applyTransformation 方法
     *
     * @param interpolatedTime 不管设定动画效果为多少秒, 它都会从  0 执行 到 1,float型, 用此参数就可以设置出动画效果
     * @param t
     */
    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {

        Log.i("test", interpolatedTime + " ");

        //设置透明度
//        t.setAlpha(interpolatedTime);
        //设置旋转动画, 300,300  会一下子跳到 300,300坐标
//        t.getMatrix().setTranslate(300, 300);

        //设置旋转动画, 慢慢的旋转到 300,300坐标(指标秒数内)
//        t.getMatrix().setTranslate(300 * interpolatedTime, 300 * interpolatedTime);

        //左右摇摆 ,  上下不动
        //(float) (Math.sin(interpolatedTime*20)*50) x轴根据数学公式设定其左右摇摆, y轴 为0,表示不动
        t.getMatrix().setTranslate((float) (Math.sin(interpolatedTime * 20) * 50), 0);
        super.applyTransformation(interpolatedTime, t);
    }

在MainActivity中:

 CustomAnimation ca;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ca = new CustomAnimation();
        ca.setDuration(1000);
        findViewById(R.id.id).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                v.startAnimation(ca);
            }
        });
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值