[英]How to make splash screen appear for longer
我有一个我正在努力的应用程序。 我需要启动画面显示至少1秒钟(最好是3秒钟) - 只需要足够长的时间让你能够瞥见整个启动画面并能够阅读标题(舒适,不必在它消失之前尽力抓住它)。
我已经在MSDN上的Windows Phone 8上阅读了关于Splashscreens的文档,它说:
通常情况下,只有当您的应用加载异常缓慢或者您想为应用添加其他品牌时,才应在应用中使用启动画面。 如果您决定在应用中使用闪屏,则有两种选择。
我的应用程序不是那种应用程序,用户需要快速,快速做一些事情,然后离开应用程序 - 所以没有什么需要匆忙。
所以,我成功地让闪屏出现了。 但是,问题是应用程序加载太快 ,您无法注意到闪屏。
如何以编程方式使启动画面显示一两秒钟? 你能设定时间吗? 你可以让它保持更长时间吗?
在加载应用程序时会显示启动画面,因此时间取决于代码的复杂程度。 您可以使用闪屏创建XAML页面,将其设置为入口点,等待所需时间,然后重定向到主页面。
您想要使用的解决方案(thread.sleep)不是一个非常好的解决方案,它应该仅用于您不会放入Windows商店的应用程序。 微软的官方解决方案是使用XAML页面作为初始屏幕(由polymorphin发布)。 之前我使用过xaml页面解决方案,这比阻止UI线程有两个原因:
在之前的项目中,我必须显示启动画面3秒钟(这是一个GIF动画),在此期间我能够与服务器建立连接并使用类似于此的代码启动地理定位服务:例如
List<Task> tasks=new List<Task>();
tasks.Add(Task.Delay(3000)); // time used by splash screen
tasks.Add(MyComponent1.DoWorkAsync());
tasks.Add(MyComponent2.DoWorkAsync());
await Task.WhenAll(tasks); //wait for all the task to complete
只需创建一个看起来与启动画面完全相同的页面,然后在启动画面后立即显示。 一两秒后从它导航。
但是,允许用户在设置中将其关闭。 每次都没有人愿意等待更多的应用程序加载。
我无法相信我的记忆有时会有多糟糕。 我刚刚在一个较旧的WP8应用程序中找到了这个:
// Code to execute when the application is launching (eg, from Start)
// This code will not execute when the application is reactivated
private void Application_Launching(object sender, LaunchingEventArgs e)
{
System.Threading.Thread.Sleep(DateTime.Now.TimeOfDay.Seconds + 3000);
}
奇迹般有效! 将它放在App.xaml.cs文件中,它将显示SplashScreen(如果有的话)3秒钟。
我发现tuto:
基本上你需要做的:
进入“SplashPage.xaml”的XML:
<Image Source="/splash.jpg" Stretch="Fill"/>
进入“SplashPage.xaml”的代码:
- 将所有需要的代码添加到“Loader”Blockquote中
public SplashPage()
{
InitializeComponent();
Loaded += SplashPage_Loaded;
}
void SplashPage_Loaded(object sender, RoutedEventArgs e)
{
//ADD YOUR CODE
}
}
- 当你想显示你的'MainPage.xaml'电话时:
NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
- 要重置堆栈中的所有页面,请执行此操作(使用该代码从堆栈中删除SplashPage:D):
NavigationService.RemoveBackEntry();
您可以在加载阶段暂停应用程序一秒钟吗?
快速搜索显示有另一个用户遇到此问题:
SplashScreen splashScreen = new SplashScreen();
splashScreen.Show(false);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.