makeSceneTransitionAnimation вызывает черный экран после поворота на Android 11 и выше

#android #animation #transition

Вопрос:

Черный экран возникает после использования перехода к общему элементу. Вот как я воспроизвожу эту ошибку:

  1. Начните с детализации ActivityOptionsCompat.makeSceneTransitionAnimation .
  2. Поверните экран.
  3. вернитесь к исходному действию с помощью жеста «Назад» (или кнопки).

Ошибка с черным экраном

Код довольно прост, но вот он:

На первом экране, Обзорная активность:

 override fun onPictureClicked(view: View, picture: Picture, position: Int) {
    startActivity(
        GalleryActivity.createIntent(this, position),
        ActivityOptionsCompat.makeSceneTransitionAnimation(
            this,
            view,
            view.transitionName
        ).toBundle()
    )
}
 

На втором экране, galleryактивность, я удостоверяюсь, что имя перехода установлено в правильных представлениях. С полным текстом проекта можно ознакомиться здесь https://github.com/nos-digital/imagin/tree/master/example.

Этот код отлично работает на версиях Android ниже версии 11, но с Android 11 это приводит к появлению черного экрана после поворота экрана. Единственный способ выйти из черного экрана-использовать многозадачность или подождать неизвестное количество времени.

Я могу последовательно воспроизводить эту ошибку на Google Pixel 3, но также и на других физических устройствах. Я также воспроизвел его на эмуляторах Android 11 и Android 12, но здесь он менее последователен.

Я хотел бы знать, как я могу предотвратить эту ошибку.

Ответ №1:

Добавьте это в свой стиль действий, и проблема будет решена:

 <item name="android:windowIsTranslucent">true</item>