在加载主页和启动画面之间,Xamarin.Android 出现白屏

Between loading my Mainpage and Splash Screen, there is white screen occurring on Xamarin.Android

我有一个 Xamarin.Forms 应用程序,它有 ios 和 android 的启动画面。它适用于 ios 完美。但是我在 android 上有问题。问题是:启动画面启动后,在加载我的主页和启动画面之间出现白屏。

I did a sample project for this problem.

我为闪屏做了这个步骤:

我将 splash_screen.xml 添加到 Android 可绘制文件夹

<?xml version="1.0" encoding="utf-8" ?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape android:shape="rectangle">
      <solid android:color="@color/colorPrimary" />
      <padding android:left="25dp"
               android:right="25dp"
               android:top="0dp"
               android:bottom="0dp" />
      <!-- Android -> Resources-> values -> colors.xml içerisinde tanımlı bu renk -->
    </shape>
  </item>
  <item>
    <bitmap
        android:src="@mipmap/icon"
        android:tileMode="disabled"
        android:gravity="center" />
  </item>
</layer-list>

我为 styles.xml

添加了闪屏样式
<style name="splashscreen" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowBackground">@drawable/splash_screen</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowActionBar">true</item>
  </style>

我在 MainActivity 上将 MainLauncher 值设置为 false。

[Activity(Label = "SplahScreenSample", 
        Icon = "@mipmap/icon",
        LaunchMode = LaunchMode.SingleInstance,
        Theme = "@style/MainTheme",
        MainLauncher = false,
        ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
  //...
}

我将 SplashActivity 添加到 Android 项目:(它的主启动器值为 true)

[Activity(Label = "SplahScreenSample", Icon = "@mipmap/icon", Theme = "@style/splashscreen", MainLauncher = true, NoHistory = true)]
    public class SplashActivity : AppCompatActivity
    {
        public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
        {
            base.OnCreate(savedInstanceState, persistentState);
        }

        protected override void OnResume()
        {
            base.OnResume();
            StartActivity(new Intent(Application.Context, typeof(MainActivity)));
        }
    }

我的问题在哪里? 提前谢谢你。

注意: 其实我理解问题。问题是:MainTheme 没有启动画面,但 MainActivity 主题是 MainTheme。但我不知道如何解决这个问题。 我尝试将启动画面添加到 MainTheme,或者我尝试将 MainActivity 主题设置为启动画面。但是这些都没有用。

最佳方法适用于此 link:https://xamarinhelp.com/creating-splash-screen-xamarin-forms/

所以我将 MainActivity Theme 设置为 splashscreen (Theme = "@style/splashscreen")。我以这种方式在 MainActivity OnCreate 方法中更改了主题:

protected override void OnCreate(Bundle bundle)
{
    base.Window.RequestFeature(WindowFeatures.ActionBar);
    // Name of the MainActivity theme you had there before.
    // Or you can use global::Android.Resource.Style.ThemeHoloLight
    base.SetTheme(Resource.Style.MainTheme);

    base.OnCreate(bundle);

    ...
 }

这有效。