如何让开机画面出现的时间更长
本文关键字:时间 开机画面 | 更新日期: 2023-09-27 18:17:49
我有一个应用程序,我正在工作。我需要闪屏显示至少1秒(最多3秒是最好的)——足够长的时间让你能够看到整个闪屏并能够阅读标题(舒适地,不必在它消失之前努力抓住它)。
我在MSDN上阅读了Windows Phone 8的Splashscreens的文档,它说:
通常情况下,你应该在你的应用程序中使用启动屏幕,只有当你的应用程序加载是否异常缓慢,或者是否想要添加额外的品牌应用。如果你决定在你的应用程序中使用启动画面,你可以两个选择。
我的应用程序不是那种用户需要快速得到它,快速完成某事然后离开应用程序的应用程序-所以没有必要匆忙做任何事情。
所以,我已经成功地让溅屏出现了。但是,问题是应用程序加载的速度太快,以至于你无法注意到闪屏。
我如何通过编程使闪屏出现一两秒钟?你能定个时间吗?你能让它保持更长时间吗?
当你的应用程序正在加载时,会显示闪屏。所以时间取决于代码的复杂程度。你可以创建一个XAML页面,将其设置为入口点,等待所需时间,然后重定向到您的主页。
来源:长时间显示Windows Phone启动屏
你想使用的解决方案(thread.sleep)不是一个很好的解决方案,它应该只用于你不打算放在Windows商店的应用程序。microsoft的官方解决方案是使用XAML页面作为启动屏幕(如polymorphin发布的)。我以前使用过xaml页面解决方案,它比阻塞UI线程要好得多,原因有两个:
- 阻塞UI线程是不好的,可能会在windows store验证过程中标记你的应用程序,使其不通过。在启动画面中,你有时间使用async模型来初始化你的应用组件。
在之前的一个项目中,我必须显示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秒。
我发现:
链接基本上你需要做的是:
- 创建一个xaml' SplashPage.xaml'
进入"SplashPage"。XML:
- 隐藏状态栏更改:shell:SystemTray。IsVisible="True" -> shell:SystemTray。IsVisible = " False "
- 添加您的图像:
<Image Source="/splash.jpg" Stretch="Fill"/>
进入"SplashPage"。xaml" s CODE:
- 将所有需要的代码添加到"Loader"中引用
public SplashPage()
{
InitializeComponent();
Loaded += SplashPage_Loaded;
}
void SplashPage_Loaded(object sender, RoutedEventArgs e)
{
//ADD YOUR CODE
}
}
- 和当你想要显示你的主页。xaml' call:
NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
- 到"主页"。xaml" s CODE:
- 要重置堆栈中的所有页面,这样做(使用该代码从堆栈中删除SplashPage:D):
NavigationService.RemoveBackEntry();
你能让应用在加载阶段休眠一秒钟吗?
休眠/暂停c#中的函数
快速搜索显示有此问题的另一个用户:
WPF SplashScreen,如何使SplashScreen显示更长
SplashScreen splashScreen = new SplashScreen();
splashScreen.Show(false);