Develop > Launching, resuming, and background tasks > Splash screens

Display a splash screen for more time

UWP应用默认自带启动画面。这是为了在程序的首页就绪之前给用户显示一些应用特定图片,增加一些体验。如果你的主页加载时间很长,那么你可以需要延长启动画面的显示时间,也就是自定义一个启动画面。

自定义启动画面需要应用准备一个XAML的页面,用来替换启动画面,暂且把这个页面叫做加载页面。为了把加载页面做得跟启动画面类似,UWP提供了SplashScreen类,可以告诉你启动画面中的图片的显示位置。这样加载页面就可以在类似的地方放置同样的画面,显得跟启动画面一致。当然,加载页面可以显示额外的自定义内容。

为了使加载页面和启动画面一样,加载页面必须使用相同的620x300的图片。然后加载页面的背景色和启动画面的背景色也必须一致。在加载页面的窗口大小发生改变的时候,必须以和启动画面一致的方式来调整图片排布(为了能够准确排布图片,建议加载页面使用Canvas容器来排布图片。)。SplashScreen的ImageLocation属性告知启动画面是如何排布图片的。

SplashScreen还有一个Dimissed事件,可以用来通知启动画面是什么时候揭下的。

该文章的剩余篇幅都在介绍加载页面的具体例子。在这个例子中,加载页面是这样加载的:

                    ExtendedSplash extendedSplash = new ExtendedSplash(e.SplashScreen, loadState);
                    rootFrame.Content = extendedSplash;

上面的代码在C++/WinRT中似乎有问题,应用会因为访问了无效的内存区域而崩溃。或许还是要通过Frame的Navigate方法来设置其Content部属。

Splash screen sample。加载页面的根元素是Grid而不是Page,有点奇怪。

取消启动画面

从SDK16299开始,可以让UWP应用不显示启动画面。参考Making UWP splash screen optional

在 Package.appxmanifest的根节点上添加uap5命名空间

<Package
  ...
  xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5">

在Application下面,增加

<uap:SplashScreen ... uap5:Optional="true" />

(本篇完)