В качестве темы-заставки я использую стиль, который также называется MainLauncher.Это мой нарисованный заставочный экран:
<?xml version="1.0" encoding="utf-8" ?> <layer-list
xmlns:android="http://schemas.android.com/apk/res/android"> <item
android:id="@+id/itemSplashScreenBackgroundColor">
<shape android:shape="rectangle">
<solid android:color="@color/colorAppOrangeTheme" />
</shape> </item> <item>
<bitmap
android:src="@drawable/LogoSplashScreen"
android:tileMode="disabled"
android:gravity="center" /> </item> </layer-list>
А вот мой файл style.xml, в котором используется упомянутый чертеж:
<resources> <style name="styleAppSplashScreenTheme"
parent="android:Theme.DeviceDefault.NoActionBar">
<item name="android:scaleType">center</item>
<item name="android:windowBackground">@drawable/XMLFileSplashScreen</item>
<item name="android:windowDisablePreview">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item> </style> </resources>
Как видите, чтобы быстро запустить мое приложение (пользователь видитвзаимодействие с приложением быстро после нажатия значка приложения) Я использую значение windowDisablePreview как false.
Теперь я меняю цвет фона заставки, используя кодировку, указанную в методе Activity OnCreate:
LayerDrawable layerDrawable = (LayerDrawable)ContextCompat.GetDrawable(this, Resource.Drawable.XMLFileSplashScreen);
GradientDrawable gradientDrawable = (GradientDrawable)layerDrawable.FindDrawableByLayerId(Resource.Id.itemSplashScreenBackgroundColor);
if (stringAppThemeName == "Orange")
{
gradientDrawable.SetColor(ContextCompat.GetColor(this, Resource.Color.colorAppOrangeTheme));
}
else if (stringAppThemeName == "Blue")
{
gradientDrawable.SetColor(ContextCompat.GetColor(this, Resource.Color.colorAppBlueTheme));
}
base.OnCreate(bundleSavedInstanceState);
Проблемаздесь, когда я перезапускаю приложение, оно сначала загружает стиль с его цветом по умолчанию (@ color / colorAppOrangeTheme) на мгновение, а затем меняет на желаемый цвет!
Несколько решений, которые я видел, как установка windowDisablePreview в true, но я неЯ не хочу отменять окно предварительного просмотра, я хочу изменить цвет фона заставки даже в окне предварительного просмотра.
Пожалуйста, предложите подходящее решение.Спасибо.