1 голос
 
1137 просмотров
23.01.2017 / 12:12  aNNiMON

Анимация поворота View на 180 градусов и перерисовка

В игре нужно сделать поворот игрового поля на 180 градусов.
Для лучшего визуального эффекта делаю анимацию и, по её окончанию, физически меняю ячейки на повёрнутые, а саму вьюху возвращаю на исходный угол.

  1. animate()
  2.     .rotation(180)
  3.     .setListener(new AnimatorListenerAdapter() {
  4.         @Override
  5.         public void onAnimationEnd(Animator animation) {
  6.             board.setBoard(rotatedBoard);
  7.             setRotation(0);
  8.         }
  9.     });

Проблема в том, что иногда виден кадр, когда поле установлено в повёрнутое, но сама вьюха всё ещё на 180 градусах. Нужно сделать эти две операции одновременно без перерисовки.

Пробовал так:
  1. setWillNotDraw(true);
  2. setRotation(0);
  3. board.setBoard(rotatedBoard);
  4. setWillNotDraw(false);
  5. invalidate();
Немного улучшило положение, но проблема не решилась. Может кто подскажет ещё варианты?
Изм. aNNiMON от 23.01.2017 / 12:13
Ответы
 
1 голос
 
# 23.01.2017 / 13:53  aNNiMON
Проблема решена. Одновременно с анимацией поворота воспроизводилась другая анимация и она делала invalidate(), перерисовывая View в неудобный момент.

Увеличив скорость той анимации так, чтобы она завершалась, прежде чем нужно будет вызвать
  1. board.setBoard(rotatedBoard);
  2. setRotation(0);
все неправильные кадры исчезли.
 
0 голосов
 
# 23.01.2017 / 22:00  DominaN
Костыль же по сути
Всего: 2

Реклама

Мы в соцсетях

tw tg yt gt