在加载主页和启动画面之间,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);
...
}
这有效。
我有一个 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);
...
}
这有效。