在我的程序中,我有一个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()。我该怎么做才能解决这个错误?
答案 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()