Циркулярное шоу показывает черный фон

Я пытаюсь реализовать анимацию, показанную здесь. Работает нормально, за исключением нераскрытой анимации, которая на мгновение показывает черный экран. Глюк существует не на всех устройствах / версиях API. Эмулятор Genymotion в Google Nexus 10 (API 22) не дает сбоев.

Выявить использование сложного набора анимаций:

  • увядать
  • перемещение макета
  • CircularReveal с конечным радиусом меньше начального радиуса
  • так далее

Я пытался установить background/foreground/tint макетов в @null/@android:color/transparent и т. д., но это совсем не помогает.

1 ответ

Решение

Сбой происходит только с 3 вещами одновременно в коде:

  • CircularReveal макет с предметами
  • Исчезать макет CircularReveal или его дочерний макет
  • задавать clipChildren=false по раскрытию макета

Мне нужно было использовать clipChildren сделать эффект перемещения CircularReveal круг со стабильным содержимым, которое не двигается, кроме кнопки закрытия.

Как я могу догадаться, проблема была с отсечением. CircularReveal использовать отсечение, clipChildren используйте это тоже, а затем alpha сделал его грязным (черным). Я не могу понять, почему это происходит в Android SDK, но у меня есть решение:

запрещать clipChildren (установить его true) когда вам это не нужно. Я сделал это на неприкрытой анимации. Результат ниже:

PS Если у вас есть более конкретный ответ с подробностями о причине глюка, я бы с радостью отметил ваш ответ как правильный.

PPS Для всех, кто интересуется реализацией анимации, я поделился здесь.

Другие вопросы по тегам