gpt4 book ai didi

android - onAnimationEnd() 调用了两次

转载 作者:行者123 更新时间:2023-11-30 00:09:42 28 4
gpt4 key购买 nike

从 23 更新构建 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);

最佳答案

删除 onAnimationEnd 上的旧监听器将解决您的问题。

        @Override
public void onAnimationEnd(Animation animation) {
slideOutRightAnimation.setAnimationListener(null);
// ... //
}

关于android - onAnimationEnd() 调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48354867/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com