为ObjectAnimator

时间:2016-07-14 15:12:14

标签: java android android-studio

在我的程序中,我有一个ObjectAnimator,可以从左向右移动ImageView。我正在尝试设置一个侦听器,它将在ObjectAnimator完成运行时执行任务。以下是我目前用来尝试实现此目的的相关代码部分:

  if (num == 350) {
        nAnim = ObjectAnimator.ofFloat(gamePiece, "translationX", 0, num);
        nAnim.setDuration(2125);
        nAnim.start();
        nAnim.addListener(new AnimationListener() {
            @Override
            public void onAnimationEnd(Animator a) {
                startGame(level);
            }

            @Override
            public void onAnimationStart(Animator a) {

            }

            @Override
            public void onAnimationCancel(Animator a) {

            }

            @Override
            public void onAnimationRepeat(Animator a) {

            }

        });

当我尝试在Android Studio中运行时,我收到错误:MainActivity不是抽象的,并且不会覆盖MainActivity中的抽象方法onAnimationStart()。我该怎么做才能解决这个错误?

3 个答案:

答案 0 :(得分:3)

由于您在MainActivity中实现了AnimatorListener,因此必须包含其所有抽象方法,并将nAnim.addListener(new Animat....更改为nAnim.addListener(this)

@Override
public void onAnimationStart(Animator animation){
}

@Override
public void onAnimationEnd(Animator animation){
    startGame(level)
}

@Override
public void onAnimationRepeat(Animator animation){
}

@Override
public void onAnimationCancel(Animator animation){
}

答案 1 :(得分:0)

您应该使用AnimatorListener类而不是如下所示的AnimationListener

ngOnInit() {
    this.myService.getData().subscribe(response => console.log(response));
}

答案 2 :(得分:0)

或者切换到 Kotlin 并将 animator.start() 作为最后一行。当然你不必实现所有的动画方法

  val gamePiece = Button(this)
    var num = 0
    val animator = ObjectAnimator.ofFloat(gamePiece, View.TRANSLATION_X, 0f, num.toFloat())
    animator.duration = 2125

    if (num ==350){

        animator.addListener(object : AnimatorListenerAdapter(){


          override fun onAnimationStart(animation: Animator?) {
                super.onAnimationStart(animation)
            }

            override fun onAnimationEnd(animation: Animator?) {
                super.onAnimationEnd(animation)
                startGame(level)
            }
        })
    }
    //animator.start() should be the last line
    animator.start()