在我的程序中,我有一个从左到右移动ImageView的ObjectAnimator。我正在尝试设置一个侦听器,该侦听器将在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()。我必须怎么做才能修复这个错误?
发布于 2016-07-14 23:23:37
由于您在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){
}发布于 2019-06-22 19:42:03
您应该使用AnimatorListener类而不是AnimationListener,如下所示
nAnim.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});发布于 2021-01-30 12:29:32
或者切换到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()https://stackoverflow.com/questions/38377936
复制相似问题