android - 过渡动画比例不会禁用应用程序内的动画
问题描述
我在做一些 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 测试我的应用程序的指南,在我发现的第一个指南和第二个指南中,第一点是通过开发人员选项禁用动画,因此我认为这是正确的方法禁用动画
解决方案
我遇到了同样的问题,我能想出的最好办法是以编程方式禁用导航动画,以防我正在运行测试:
fun getBuilderWithAdditionalNavOptions(): NavOptions.Builder {
val optionsBuilder = NavOptions.Builder()
if (inTest)
optionsBuilder
.setEnterAnim(0).setExitAnim(0)
.setPopEnterAnim(0).setPopExitAnim(0)
return optionsBuilder
}
运行 espresso 测试时inTest
设置的项目范围变量在哪里。true
推荐阅读
- php - 作曲家总是检测到我本地 php 的错误版本
- multithreading - 在 julia 中,是否有一个宏可以在每个线程中运行一个任务?
- notifications - 如果 ECS 服务启动新任务,如果触发了自动缩放,则获取通知
- ios - @Binding 没有从父 View 获取新值
- python - 可映射类中的可哈希对象不包含在可映射类中。我们可以称之为错误吗?
- google-apps-script-api - 如何在appsscript中解析json数据
- c# - 在应用程序视图中共享当前用户
- c# - 带有等待的异步方法与返回任务的普通方法
- node.js - 使用“npm”启动一个简单的 HTTP 服务器而不安装 npm
- java - 如何在 Redis 连接中传递 ipv6 地址