当 Android 12 及更高版本时,启动屏幕在 .NET Maui 中不显示全屏。启动画面像往常一样包含一个徽标和底部的几行文字。问题是图像和文本看起来非常小,并且与其他版本相比无法全屏显示。它使用以下版本显示全屏,例如 Android 9。我尝试过将启动屏幕作为内容页面,但是与以前的版本相比,它的性能有所延迟。所以请帮助解决问题。附上示例截图
从文档向 .NET MAUI 应用程序项目添加启动屏幕,我们知道
在 Android 12+ (API 31+) 上,启动画面显示一个图标,该图标是 位于屏幕中央。
在启动画面中无法使图像全屏显示。只能自定义:图标、窗口背景、退出动画。请检查文档:developer.android.com 上的启动画面。
不过,有一个解决方法可以让闪屏变成透明,然后你可以用ContentPage创建一个splashScreen,在ContentPage中添加图片。
步骤1。在
styles.xml
文件夹下创建Platforms/Android/Resources/values
,添加以下代码自定义样式。并确保 build action
的 styles.xml
是 AndroidResource
。
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="MyTheme.Splash" parent ="MainTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowSplashScreenAnimatedIcon">@android:color/transparent</item>
<item name="android:windowSplashScreenAnimationDuration">0</item>
</style>
</resources>
步骤2。打开
MainActivity.cs
,将主题更改为Theme = "@style/MyTheme.Splash"
。
[Activity(Theme = "@style/MyTheme.Splash", ...)]
public class MainActivity : MauiAppCompatActivity
{
}
步骤3。请创建一个名为
SplashScreen
的内容页面并将您的图像添加到其中。几秒钟后按Task.Delay()
和Application.Current.MainPage = new MainPage ();
打开主页。
就像下面的代码一样。
protected override async void OnAppearing()
{
base.OnAppearing();
await Task.Delay(1000).ContinueWith(t => {
MainThread.InvokeOnMainThreadAsync(() => {
Application.Current.MainPage = new MainPage ();
});
});
}
步骤4。打开
App.xaml.cs
,将 MainPage 更改为 SplashScreen。
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new SplashScreen();
}
}