将初始屏幕添加到 .NET MAUI 应用项目

在Android和iOS上,.NET 多平台应用 UI (.NET MAUI) 应用可以在初始化过程完成时显示初始屏幕。 启动应用时立即显示初始屏幕,在初始化应用资源时立即向用户提供反馈:

.NET MAUI splash screens screenshot.

应用准备好交互后,将消除其初始屏幕。

在 .NET MAUI 应用项目中,可以在应用项目中的单个位置指定初始屏幕,在生成时,它可以自动调整为目标平台和设备的正确分辨率,并将其添加到应用包中。 这样就无需手动复制并为每个平台命名初始屏幕。 默认情况下,位图 (非矢量) 图像格式不会由 .NET MAUI 自动调整大小。

.NET MAUI 初始屏幕可以使用任何标准平台图像格式,包括可缩放矢量图形 (SVG) 文件。

重要

.NET MAUI 将 SVG 文件转换为 PNG 文件。 因此,将 SVG 文件添加到 .NET MAUI 应用项目时,应从具有.png扩展名的 XAML 或 C# 引用该文件。

通过将图像拖入项目的 Resources\Images 文件夹,并将图像的生成操作设置为“属性”窗口中的 MauiSplashScreen,可以向应用项目添加初始屏幕。 这会在项目文件中创建相应的条目:

<ItemGroup>
  <MauiSplashScreen Include="Resources\Images\splashscreen.svg" />
</ItemGroup>

若要符合Android资源命名规则,初始屏幕文件名必须为小写、以字母字符开头和结尾,并且仅包含字母数字字符或下划线。 有关详细信息,请参阅有关 developer.android.com 的应用资源概述

初始屏幕的基大小可以通过将 BaseSize 特性设置为 8 可分割的值来指定:

<MauiSplashScreen Include="Resources\Images\splashscreen.jpg" BaseSize="128,128" />

特性的值 BaseSize 表示初始屏幕的基线密度,并且实际上是派生所有其他密度大小的初始屏幕的 1.0 缩放因子。 此值将用于确保初始屏幕大小正确调整为不同的显示密度。 如果未为基于位图的初始屏幕指定大小 BaseSize ,则不会调整图像大小。 如果未为基于矢量的初始屏幕指定 BaseSize 值,则假定 SVG 中指定的尺寸为基大小。 若要停止重设矢量图像的大小,请将 Resize 属性设置为 false

<MauiSplashScreen Include="Resources\Images\splashscreen.svg" Resize="false" />

若要向初始屏幕添加色调,如果具有要以不同颜色呈现的简单图像,请设置 TintColor 属性:

<MauiSplashScreen Include="Resources\Images\splashscreen.svg" TintColor="#66B3FF" />

还可以指定初始屏幕的背景色:

<MauiSplashScreen Include="Resources\Images\splashscreen.svg" Color="#512BD4" />

可以在十六进制或 .NET MAUI 颜色中指定颜色值。 例如, Color="Red" 有效。

在生成时,可将初始屏幕的大小调整为目标平台和设备的正确分辨率。 然后将生成的初始屏幕添加到应用包。

在Android,初始屏幕将作为 Resourcs/values/maui_colors.xmlResources/drawable/maui_splash_image.xml添加到应用包。 .NET MAUI 应用默认使用 Maui.SplashTheme ,这可确保显示初始屏幕(如果存在)。 因此,不应在清单文件或类中 MainActivity 指定其他主题:

using Android.App;
using Android.Content.PM;

namespace MyMauiApp
{
      [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)]
      public class MainActivity : MauiAppCompatActivity
      {
      }
}

对于更高级的初始屏幕方案,应用每个平台的方法。