Изменение темы xamarin android launcher, которая применима даже к окну предварительного просмотра - PullRequest
0 голосов
/ 06 июня 2018

В качестве темы-заставки я использую стиль, который также называется 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, но я неЯ не хочу отменять окно предварительного просмотра, я хочу изменить цвет фона заставки даже в окне предварительного просмотра.

Пожалуйста, предложите подходящее решение.Спасибо.

...