Android自带属性动画之ObjectAnimator

属性动画ObjectAnimator:

• translationX和translationY:用来沿着X轴或者Y轴进行平移。

• rotation、rotationX、rotationY:用来围绕View的支点进行旋转。

• scaleX、scaleY:横向拉伸和纵向拉伸

• alpha:透明度,默认是1(不透明),0代表完全透明。

• x和y:描述View对象在其容器中的最终位置。

btn_ObjectAnimator.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                objectAnimator = ObjectAnimator.ofFloat(iv, "alpha", 0f, 1f).setDuration(1000);
                objectAnimator.addListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        super.onAnimationEnd(animation);
                        ObjectAnimator.ofFloat(iv, "translationX", 0f, 500f, -500f, 0f).setDuration(3000).start();
                    }
                });
                objectAnimator.start();
            }
});

 

组合动画AnimatorSet:
• after(Animator anim):将现有动画插入到传入的动画之后执行。
• after(long delay):将现有动画延迟指定毫秒后执行。
• before(Animator anim):将现有动画插入到传入的动画之前执行。
• with(Animator anim):将现有动画和传入的动画同时执行。

btn_AnimatorSet.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ObjectAnimator animator1 = ObjectAnimator.ofFloat(iv, "alpha", 0f, 1f).setDuration(3000);
                ObjectAnimator animator2 = ObjectAnimator.ofFloat(iv, "rotation", 0f, 720f).setDuration(3000);
                ObjectAnimator animator3 = ObjectAnimator.ofFloat(iv, "translationX", -500f, 0f).setDuration(3000);
                AnimatorSet set = new AnimatorSet();
                set.play(animator1).with(animator2).with(animator3);
                set.start();
            }
});

组合动画PropertyValuesHolder:
使用PropertyValuesHolder类只能是多个动画一起执行

btn_PropertyValuesHolder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PropertyValuesHolder valuesHolder1 = PropertyValuesHolder.ofFloat("scaleX", 1.0f, 2.0f, 1.0f);
                PropertyValuesHolder valuesHolder2 = PropertyValuesHolder.ofFloat("rotationX", 0.0f, 360.0f);
                PropertyValuesHolder valuesHolder3 = PropertyValuesHolder.ofFloat("alpha", 1.0f, 0.3f, 1.0f);
                PropertyValuesHolder valuesHolder4 = PropertyValuesHolder.ofFloat("scaleY", 1.0f, 2.0f, 1.0f);
                objectAnimator = ObjectAnimator.ofPropertyValuesHolder(iv, valuesHolder1, valuesHolder2, valuesHolder3, valuesHolder4);
                objectAnimator.setDuration(3000).start();
            }
});

Demo:https://github.com/cuiwenju2017/ObjectAnimator

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

举儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值