UWP自定义启动画面实现咨询:非仅图片居中需求及示例问题
UWP自定义启动画面(突破默认居中图片限制)
我太懂这种感受了——本来想做个不只是居中图片的UWP启动画面,以为查官方文档和示例就能搞定,结果那个MSDN示例居然是个空架子,完全没实现实际功能,白忙活半天确实挺闹心的。
别慌,其实要实现自定义启动画面(比如非居中布局、添加文字/进度条甚至动画),正确的做法是用扩展启动画面的思路:系统先显示默认的启动画面作为过渡,然后我们在应用启动后加载一个自定义页面模拟启动效果,直到应用初始化完成再切换到主界面。下面是具体步骤:
1. 准备自定义启动画面页面
先创建一个SplashScreenPage,在这个页面里你可以完全自由布局,比如把图片放在左上角、底部加加载提示、添进度环等等:
<Page x:Class="YourAppNamespace.SplashScreenPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid> <!-- 自定义布局示例:图片左对齐,底部加提示和进度环 --> <Image Source="Assets/YourCustomSplashImage.png" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="32"/> <TextBlock Text="正在初始化应用..." VerticalAlignment="Bottom" HorizontalAlignment="Center" FontSize="18" Margin="0,0,0,48"/> <ProgressRing IsActive="True" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0,0,0,80"/> </Grid> </Page>
2. 在应用启动逻辑中控制切换
打开App.xaml.cs,修改OnLaunched方法,先显示自定义启动画面,等应用初始化完成后再跳转到主页面:
private Frame _rootFrame; private SplashScreenPage _splashPage; protected override void OnLaunched(LaunchActivatedEventArgs e) { _rootFrame = Window.Current.Content as Frame; if (_rootFrame == null) { _rootFrame = new Frame(); _rootFrame.NavigationFailed += OnNavigationFailed; // 如果应用之前被终止,这里可以恢复状态 if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { // 按需添加状态恢复逻辑 } Window.Current.Content = _rootFrame; } if (!e.PrelaunchActivated) { if (_rootFrame.Content == null) { // 加载自定义启动画面 _splashPage = new SplashScreenPage(); _rootFrame.Content = _splashPage; // 异步执行应用初始化(比如加载数据、初始化服务) _ = InitializeAppAsync(); } Window.Current.Activate(); } } private async Task InitializeAppAsync() { // 替换成你的真实初始化逻辑,比如加载本地数据、调用API等 await Task.Delay(2000); // 示例:模拟2秒加载时间 // 初始化完成,导航到主页面 _rootFrame.Navigate(typeof(MainPage)); } private void OnNavigationFailed(object sender, NavigationFailedEventArgs e) { throw new Exception("Failed to load Page " + e.SourcePageType.FullName); }
关键说明
- 这种方式完全摆脱了默认启动画面的布局限制,你可以在
SplashScreenPage里实现任何你想要的UI效果,包括动画、动态内容等。 - 那个MSDN示例确实是无效的,不用再纠结它,按上面的方法来是经过验证的可行方案。
内容的提问来源于stack exchange,提问作者Christian Findlay
相关产品推荐
相关产品推荐

