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

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

Сообщение Anonymous »

После реализации API-интерфейса заставки, как указано в документации Android (а также здесь и здесь), действие запуска (которое происходит сразу после экрана-заставки) не имеет динамической цветовой темы, как остальная часть приложения. Экран-заставка имеет атрибут @style/Theme.App, который должен применять тему базового приложения к действию запуска после заставка очищается, но это не так. Все остальное было реализовано так, как того требует документация (класс активности, файл манифеста, класс активности и файлы themes.xml).
Я перепробовал все возможные комбинации и только одну. что "работает" - это когда не устанавливается начальная тема действия (или все действие) в качестве заставки в манифесте (т. е. android:theme="@style/Theme.App.Starting"< /код>). Но тогда почему документация настаивает на этом? Что я могу сделать, чтобы все работало так, как задумано?
Изменить: соответствующий код по запросу
Splash Theme:

Код: Выделить всё

    

?android:attr/colorBackground
@mipmap/ic_launcher_round
200
@style/Theme.App


?android:attr/colorBackground
?android:attr/colorBackground
true

манифест (только соответствующие атрибуты): MainActivity:

Код: Выделить всё

  override fun onCreate(savedInstanceState: Bundle?) {

setupSplashScreen()

super.onCreate(savedInstanceState)
/*...*/
}
Класс приложения:

Код: Выделить всё

class App : Application() {
override fun onCreate() {
super.onCreate()
// Apply dynamic color
DynamicColors.applyToActivitiesIfAvailable(this)
}
}
Изменить: 5 июля 2023 г.: (возможно) окончательное обновление.
После огромного количества испытаний и исследований я пришел к выводу, что это это ошибка, и она не может/не будет исправлена ​​в ближайшее время. Я также определил причину этого.
Об ошибке было сообщено более полутора лет назад, и причина ее возникновения заключается в том, что после вызова библиотеки postSplashScreenTheme, он снова устанавливает базовую тему приложения, которая избавляется от цветов Material You (динамических). В другом проекте возникла та же проблема, из-за которой им не удалось реализовать для себя Material You. Кто-то предложил установить DynamicColors.applyToActivitiesIfAvailable(this) в каждом действии после installSplashScreen(), но строка состояния сохраняла базовый цвет темы вместо динамического цвета, поэтому это было бесполезно. В своих экспериментах я нашел другой обходной путь: не устанавливать какую-либо тему-заставку в манифесте (

Код: Выделить всё

android:theme="@style/Theme.App.Starting"
), похоже, работает на уровне API 31+, но вообще не отображает значок заставки на предыдущих уровнях, поэтому он также бесполезен.
Начиная с этого обновления Splash Screen API и Material You (динамический цвет) конфликтуют друг с другом и поэтому являются взаимоисключающими. Я не буду использовать динамические цвета, так как мне нужна функция загрузки данных при запуске приложения из API-интерфейса заставки.

Подробнее здесь: https://stackoverflow.com/questions/765 ... ash-screen
Ответить

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

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

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

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

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