首页 > 解决方案 > 过渡动画比例不会禁用应用程序内的动画

问题描述

我在做一些 Espresso UI 测试时遇到了一个问题:我想禁用我的应用程序中的动画,这样我就不需要设置超时/需要等待动画完成。

在我的 android 设备上的开发人员选项中禁用 Window 动画比例、Transition 动画比例、Animator 持续时间比例不会在使用 android 的导航组件在片段之间导航时禁用动画。

动画设置如下:

<action
    android:id="@+id/confirmationAction"
    app:destination="@id/confirmationFragment"
    app:enterAnim="@anim/slide_in_right"
    app:exitAnim="@anim/slide_out_left"
    app:popEnterAnim="@anim/slide_in_left"
    app:popExitAnim="@anim/slide_out_right" />

如何在运行 espresso UI 测试时禁用此动画?

更新:

我遵循了谷歌关于使用导航组件在片段之间导航的指南。

然后我查看了谷歌关于使用 Espresso 测试我的应用程序的指南,在我发现的第一个指南第二个指南中,第一点是通过开发人员选项禁用动画,因此我认为这是正确的方法禁用动画

标签: androidanimationnavigationandroid-espresso

解决方案


我遇到了同样的问题,我能想出的最好办法是以编程方式禁用导航动画,以防我正在运行测试:

fun getBuilderWithAdditionalNavOptions(): NavOptions.Builder {
  val optionsBuilder = NavOptions.Builder()
  if (inTest)
    optionsBuilder
      .setEnterAnim(0).setExitAnim(0)
      .setPopEnterAnim(0).setPopExitAnim(0)

  return optionsBuilder
}

运行 espresso 测试时inTest设置的项目范围变量在哪里。true


推荐阅读