PostSplashScreenTheme не применяет тему после заставкиAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 PostSplashScreenTheme не применяет тему после заставки

Сообщение Гость »


После реализации API-интерфейса заставки, как указано в документации Android (а также здесь и здесь), действие запуска (которое происходит сразу после экрана-заставки) не имеет динамической цветовой темы, как остальная часть приложения. Экран-заставка имеет атрибут @style/Theme.App, который должен применять тему базового приложения. к активности запуска после очистки экрана-заставки, но это не так. Все остальное было реализовано так, как того требует документация (класс активности, файл манифеста, класс активности и файлы themes.xml).

Я испробовал все возможные комбинации, и единственная, которая «работает», — это когда не установка начальной темы действия (или всего действия) в качестве заставки в манифесте (т. е. < code>android:theme="@style/Theme.App.Starting"). Но тогда почему документация настаивает на этом? Что я могу сделать, чтобы все работало так, как задумано?

Изменить: соответствующий код по запросу

Тема-заставка:

?android:attr/colorBackground @mipmap/ic_launcher_round 200 @style/Theme.App ?android:attr/colorBackground ?android:attr/colorBackground true манифест (только соответствующие атрибуты):

Основная активность:

переопределить fun onCreate(savedInstanceState: Bundle?) { настройкаSplashScreen() super.onCreate(savedInstanceState) /*...*/ } Класс приложения:

class App: Application() { переопределить удовольствие onCreate() { супер.onCreate() // Применяем динамический цвет DynamicColors.applyToActivitiesIfAvailable(это) } } Изменение от 5 июля 2023 г.: (возможно) последнее обновление

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

Об ошибке было сообщено более полутора лет назад, и причина ее возникновения заключается в том, что после того, как библиотека вызывает postSplashScreenTheme, она снова устанавливает базовую тему приложения, что избавляет от Материал You (динамический) цвета. В другом проекте возникла та же проблема, из-за которой им не удалось реализовать для себя Material You. Кто-то предложил установить DynamicColors.applyToActivitiesIfAvailable(this) в каждом действии после installSplashScreen(), но строка состояния сохраняла базовый цвет темы вместо динамического цвета, поэтому это было бесполезно . В своих экспериментах я нашел другой обходной путь: не установка какой-либо темы-заставки в манифесте (android:theme="@style/Theme.App.Starting"), похоже, работает API уровня 31+, но вообще не показывает значок заставки на предыдущих уровнях, поэтому он также бесполезен.

Начиная с этого обновления API-интерфейс Splash Screen и Material You (динамический цвет) конфликтуют друг с другом и, следовательно, являются взаимоисключающими. Я не буду использовать динамические цвета, так как мне нужна функция загрузки данных при запуске приложения из API-интерфейса заставки.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»