Мое приложение имеет определенные действия, которые требуют рендеринга сложной компоновки. В течение этого времени я хотел бы показать анимацию. Я пытаюсь обработать анимацию в dispatchDraw (), но, поскольку рендеринг занимает много времени, пользовательский интерфейс dispatchDraw () никогда не получает возможности для выполнения. (Было бы неплохо оптимизировать это, но сейчас это не мой приоритет.)
Это основная часть моего анимационного кода:
ValueAnimator animator = ValueAnimator.ofFloat (1f, 2f);
animator.setDuration (1000);
animator.addUpdateListener (new ValueAnimator.AnimatorUpdateListener()
{
public void onAnimationUpdate (ValueAnimator animation)
{
zoomScale = (float) animation.getAnimatedValue ();
invalidate ();
}
});
Есть ли способ рисовать непосредственно во время onAnimationUpdate (), вместо того, чтобы полагаться на invalidate ()?
Или, альтернативно, есть ли способ отказаться от потока пользовательского интерфейса во время долгого onLayout ()?