В минувшие выходные я провел небольшое расследование, так как столкнулся с той же проблемой, и это беспокоило меня.Я также провел некоторое сравнение с тем, что происходит на устройстве, чтобы определить различия.
Внутренне androidx.swiperefreshlayout.widget.SwipeRefreshLayout
имеет mRefreshListener
, который будет работать при вызове onAnimationEnd
.Затем AnimationEnd
вызовет метод OnRefreshListener.onRefresh
.
Этот слушатель анимации (mRefreshListener
) передается в mCircleView (CircleImageView)
и вызывается запуск анимации круга.
На устройствекогда вызывается метод view draw
, он вызывает метод applyLegacyAnimation
, который, в свою очередь, вызывает метод AnimationStart
.В AnimationEnd,
будет вызван метод onRefresh
.
В Robolectric метод рисования View
никогда не вызывается, поскольку элементы фактически не отрисовываются.Это означает, что анимация никогда не запустится, и, следовательно, метод onRefresh
также не будет.
Мой вывод заключается в том, что в текущей версии Robolectric невозможно проверить, что onRefresh
вызвано из-за ограничений реализации.Похоже, что в будущем планируется реалистичный рендеринг.