从 23 更新 build sdk 27 后,在调用时遇到了 onAnimationEnd 在下面的代码中触发两次的问题。onAnimationStart 仅被调用一次,并且 onAnimationRepeat 没有按预期调用。现在在应用程序中,当用户按一次后退按钮时,他们会后退两步。
gradle 中的所有库都使用最新的 27.0.2。这段代码在 sdk 23 中运行良好。我们的最小目标是 16。
我正在使用 isAnimating 标志来解决问题,但想找到可能影响应用程序其他区域的根本原因。
@Override
public void onBackPressed() {
Animation slideOutRightAnimation = AnimationUtils.loadAnimation(this, R.anim.slide_out_right);
slideOutRightAnimation.setFillAfter(true);
slideOutRightAnimation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
isAnimating = true;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
if(isAnimating) { // Fix
getSupportFragmentManager().popBackStackImmediate();
}
isAnimating = false;
}
});
fragmentToPopView.clearAnimation();
fragmentToPopView.startAnimation(slideOutRightAnimation);