我有一个我正在制作的应用。我需要启动画面显示至少1秒钟(最好是3秒钟) - 只需要足够长的时间让你能够瞥见整个启动画面并能够阅读标题(舒适,不必在它消失之前尽力抓住它。)
我已经在MSDN上的Windows Phone 8上阅读了关于Splashscreens的文档,它说:
通常,只有在您的应用中,才应在应用中使用启动画面 加载或者想要添加其他品牌的速度非常慢 应用。如果您决定在应用中使用启动画面,则可以 两个选项。
我的应用程序不是那种用户需要快速获取,快速执行某些操作然后离开应用程序的应用程序 - 因此不需要任何匆忙的事情。
所以,我成功地让闪屏出现了。但是,问题是应用加载太快,以便您能够注意到闪屏。
如何以编程方式使启动画面显示一两秒钟?你能设定时间吗?你可以让它保持更长时间吗?
答案 0 :(得分:5)
加载应用程序时会显示启动画面, 所以时间取决于代码的复杂程度。你可以创建一个 带有你的闪屏的XAML页面,将其设置为入口点,等待 所需时间,然后重定向到您的主页。
答案 1 :(得分:5)
您要使用的解决方案(thread.sleep)不是一个非常好的解决方案,它应该仅用于您不会放入Windows商店的应用程序。微软的官方解决方案是使用XAML页面作为初始屏幕(由polymorphin发布)。之前我使用过xaml页面解决方案,这比阻止UI线程更好,原因有两个:
在之前的项目中,我必须显示启动画面3秒钟(它是一个动画gif),在此期间,我能够与服务器建立连接并使用类似于此的代码启动地理定位服务: e.g。
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
答案 2 :(得分:4)
只需创建一个与启动画面完全相同的页面,并在启动画面后立即显示。一两秒后从它导航。
但是,允许用户在设置中将其关闭。没有人愿意等待更多的应用加载而不是每次 。
答案 3 :(得分:0)
我无法相信我的记忆有时会有多糟糕。我刚刚在我的一个较旧的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秒钟。
答案 4 :(得分:0)
我发现tuto:
基本上你需要这样做:
进入“SplashPage.xaml”的XML:
<Image Source="/splash.jpg" Stretch="Fill"/>
进入“SplashPage.xaml”的代码:
- 将您需要的所有代码添加到“Loader”中 块引用
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();
答案 5 :(得分:-1)
你可以在加载阶段暂停应用程序一秒钟吗?
答案 6 :(得分:-1)
快速搜索显示有另一个用户遇到此问题:
WPF SplashScreen , how to make splashscreen showing longer
SplashScreen splashScreen = new SplashScreen();
splashScreen.Show(false);