Когда запускается приложение Cordova для Android, на короткое время появляется пустой экран до запуска cordova-plugin-splashscreen. Я узнал, что это цвет windowBackground и его можно изменитьсоздав пользовательский файл styles.xml и ссылаясь на него в AndroidManifest.xml, используя свойство android: theme для действия.Пример:
Из AndroidManifest.xml:
<activity android:configChanges="orientation|keyboard|keyboardHidden|screenLayout|screenSize" android:label="@string/activity_name" android:launchMode="singleTask" android:name="MainActivity" android:screenOrientation="portrait" android:theme="@style/CustomStyle" android:windowSoftInputMode="adjustPan">
Из styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomStyle" parent="@android:style/Theme.Material.Light.NoActionBar">
<item name="android:windowBackground">@drawable/init_splash</item>
</style>
</resources>
styles.xml ссылается на другой файл, содержащий только нарисованный цвет.
Это работает.Это позволяет мне изменить цвет, который появляется перед заставкой.
Однако сейчас я хочу позволить пользователю при желании сменить на темную тему .Я уже разобрался, как изменить cordova-plugin-splashscreen, чтобы изменить заставку в зависимости от предпочтений пользователя, но у меня возникают проблемы программное изменение windowBackground / theme во время выполнения .
Я попытался добавить следующее в MainActivity.java или CordovaActivity.java:
setTheme(R.style.CustomDarkStyle);
getWindow().setBackgroundDrawableResource(getResources().getIdentifier("init_splash_dark", "drawable", getPackageName()));
getWindow().setBackgroundDrawable(new ColorDrawable(Color.BLACK));
Я поместил их в onCreate перед super.onCreate () или setContentView ().Цвет фона окна действительно меняется, , но первоначальный пустой экран перед тем, как всплеск остается с тем цветом, который был установлен в манифесте .
Как изменить фон деятельности / окнацвет программно при запуске приложения?
Некоторые предлагали изменить тему приложения на прозрачную, чтобы полностью закрыть пустой экран, но это вызывает задержку при открытии приложения,У меня все нормально с пустым экраном, я просто хочу программно изменить его цвет.
По состоянию на 22 апреля мне еще предстоит найти решение этой проблемы.