动画完成后执行语句

时间:2017-01-20 01:37:38

标签: java android animation execute

我要做的是按下按钮时ImageView摇动,动画结束后,ImageView的图像消失。

我希望首先执行此语句:

ObjectAnimator
                .ofFloat(img, "translationX", 0, 25, -25, 25, -25, 15, -15,     6, -6, 0)
                .setDuration(300)
                .start();

并且在动画结束后,此语句应该执行:

        img.setImageResource(android.R.color.transparent);

我有一个接一个的,所以动画没有结束图片消失。

2 个答案:

答案 0 :(得分:1)

使用以下代码

ObjectAnimator.ofFloat(img, "translationX", 0, 25, -25, 25, -25, 15, -15,     6, -6, 0).addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationEnd(animation);
                Log.e("Animation-Completed:", "onAnimationEnd");
                img.setImageResource(android.R.color.transparent);
            }
        }).setDuration(300).start();

修改以添加持续时间:

ObjectAnimator anim = ObjectAnimator.ofFloat(img, "translationX", 0, 25, -25, 25, -25, 15, -15,     6, -6, 0);
anim.setDuration(300);                  // Duration in milliseconds
anim.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    super.onAnimationEnd(animation);
                    Log.e("Animation-Completed:", "onAnimationEnd");
                    img.setImageResource(android.R.color.transparent);
                }
            }); 
anim.start();

答案 1 :(得分:0)

使用以下代码:

ObjectAnimator
            .ofFloat(img, "translationX", 0, 25, -25, 25, -25, 15, -15,     6, -6, 0)
            .setDuration(300)
            .start()
            .addListener(new Animator.AnimatorListener() {
                @Override
                public void onAnimationStart(Animator animator) {

                }

                @Override
                public void onAnimationEnd(Animator animator) {
                   img.setImageResource(android.R.color.transparent);
                }

                @Override
                public void onAnimationCancel(Animator animator) {

                }

                @Override
                public void onAnimationRepeat(Animator animator) {

                }
            });