安卓-AnimatorSet监听器不起作用。

3

我正在尝试设置动画监听器,以便在最后对象动画发生某些事情!这是我目前的代码:

 as=new AnimatorSet();
        as.addListener(new Animator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animation) {

            }

            @Override
            public void onAnimationEnd(Animator animation) {
                om.Initialize();
                System.out.println("GotIn");
                DataBase.eaten=false;
            }

            @Override
            public void onAnimationCancel(Animator animation) {

            }

            @Override
            public void onAnimationRepeat(Animator animation) {

            }
        });

        float distance=CalcDistance();
        float angle=CalcAngle();
        tongue.setPivotX(2);
        tongue.setPivotY(0);
        rotate_tongue=ObjectAnimator.ofFloat(tongue, "rotation",0,90+angle);
        rotate_tongue.setDuration(0);
        rotate_tongue.start();
        tongue.setVisibility(View.VISIBLE);
        scale_tongue=ObjectAnimator.ofFloat(tongue,"scaleY",1.0f,1.0f*(distance/4));
        scale_tongue.setDuration(500);
        shrink_tongue=ObjectAnimator.ofFloat(tongue,"scaleY",1.0f*(distance/4),1.0f);
        shrink_tongue.setDuration(400);


        as.play(rotate_tongue).with(scale_tongue).before(shrink_tongue);
        as.start();

问题在于监听器没有起作用,当动画集结束时没有发生任何事情!如何解决?谢谢!


你找到答案了吗?我也遇到了同样的问题。 - JayRod
1个回答

3

如果你还没有在3年内弄清楚,请尝试这个 :)

    as.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            // your code here
        }
    });

这是一个不错的解决方案,可以使代码更简短。我之前遇到了类似于 OP 的问题,只是 onAnimationRepeat() 从未被调用过。这个也不行,但在单独设置动画时可以工作,两种方式都试了。很想知道为什么... - Attila Orosz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接