返回

Android 14 上 overridePendingTransition 动画怪异?该如何解决?

Android

Android 14 上的 overridePendingTransition 动画怪异

问题

在 Android 14 上进行活动转换时使用动画,您可能会遇到一个令人头疼的问题。当您从 res/anim 目录中删除任何过时的 XML 文件时,此问题就会出现。此问题仅在 Android 14 设备上发生,在重新启动设备后会暂时消失。

分析

问题的根源在于 Android 14 中对动画处理的变更。某些过时的动画 XML 文件已被弃用,当它们存在时,它们会干扰 overridePendingTransition 的正常功能。

解决方案

要解决此问题,请确保:

  • res/anim 目录中删除所有过时的动画 XML 文件。
  • 您使用的动画文件符合 Android 14 的最新指南。

故障排除

  • 仅限 Android 14 设备出现此问题。
  • 重新启动设备可以暂时解决问题。
  • 如果问题仍然存在,请尝试使用不同的动画或联系 Android 开发者支持团队。

过时动画 XML 文件

Android 14 弃用了以下过时的动画 XML 文件:

  • accelerate_decelerate_interpolator.xml
  • accelerate_interpolator.xml
  • anticipate_interpolator.xml
  • anticipate_overshoot_interpolator.xml
  • bounce_interpolator.xml
  • cycle_interpolator.xml
  • decelerate_interpolator.xml
  • linear_interpolator.xml
  • overshoot_interpolator.xml

新动画指南

在 Android 14 中,使用过渡动画有以下最佳实践:

  • 使用 ObjectAnimatorValueAnimator 创建自动画。
  • 使用 Transition API 进行复杂的动画。
  • 避免在 XML 中定义过长的动画持续时间。

结论

通过删除过时的动画 XML 文件并遵循最新的动画指南,您可以解决 Android 14 上 overridePendingTransition 的意外行为。这将确保您的活动转换平滑无缝。

常见问题解答

  1. 为什么会出现此问题?
    过时的动画 XML 文件会干扰 Android 14 中对动画处理的更改。

  2. 如何检查哪些动画 XML 文件已过时?
    检查 res/anim 目录并查找以 .xml 为扩展名的文件,其名称与上文列出的过时文件名称匹配。

  3. 如果不删除过时的动画 XML 文件会发生什么?
    overridePendingTransition 动画可能会出现意外行为,如延迟、闪烁或完全不显示。

  4. 如果问题仍然存在怎么办?
    尝试使用不同的动画或联系 Android 开发者支持团队。

  5. 此问题影响哪些 Android 版本?
    仅影响 Android 14 及更高版本。