Вопрос:

Условия гонки при использовании ViewProperyAnimators при тестировании с Espresso

android android-animation android-espresso

62 просмотра

1 ответ

18311 Репутация автора

У меня есть простой тест на эспрессо, который не может подтвердить видимость из-за того, что я считаю проблемой анимации. Я отключил все настройки анимации на устройстве.

bannerLayout.animate()
        .y(0)
        .setInterpolator(new DecelerateInterpolator(1));

и мое утверждение в эспрессо

onView(withId(R.id.banner_layout)).check(matches(not(isDisplayed())));

Добавление сна перед утверждением делает тест пройденным.

Автор: loeschg Источник Размещён: 08.11.2017 11:58

Ответы (1)


0 плюса

18311 Репутация автора

Решение

Я обнаружил, что принудительное запуск анимации вместо того, чтобы полагаться на фреймворк для ее запуска, устранило проблему.

bannerLayout.animate()
    .y(0)
    .setInterpolator(new DecelerateInterpolator(1))
    .start();

Документы Android заявляют:

void start ()

Запускает анимации свойств, ожидающие в данный момент. Вызов start () является необязательным, поскольку все анимации запускаются автоматически при следующей возможности. Однако, если анимации требуются для немедленного и синхронного запуска (а не в тот момент, когда иерархия обрабатывает следующее событие, то есть когда анимации начинаются иначе), этот метод можно использовать.

Для простых анимаций это должно быть хорошо. Если у вас есть какой-то сложный сценарий с проблемами производительности, возможно, это не тот путь.

Автор: loeschg Размещён: 08.11.2017 11:58
Вопросы из категории :
32x32