如何让开机画面出现的时间更长



我有一个应用程序,我正在工作。我需要闪屏显示至少1秒(最多3秒是最好的)——足够长的时间让你能够看到整个闪屏并能够阅读标题(舒适地,不必在它消失之前努力抓住它)。

我在MSDN上阅读了Windows Phone 8的Splashscreens的文档,它说:

通常情况下,你应该在你的应用程序中使用启动屏幕,只有当你的应用程序加载是否异常缓慢,或者是否想要添加额外的品牌应用。如果你决定在你的应用程序中使用启动画面,你可以两个选择。

我的应用程序不是那种用户需要快速得到它,快速完成某事然后离开应用程序的应用程序-所以没有必要匆忙做任何事情。

所以,我已经成功地让溅屏出现了。但是,问题是应用程序加载的速度太快,以至于你无法注意到闪屏。

我如何通过编程使闪屏出现一两秒钟?你能定个时间吗?你能让它保持更长时间吗?

当你的应用程序正在加载时,会显示闪屏。所以时间取决于代码的复杂程度。你可以创建一个XAML页面,将其设置为入口点,等待所需时间,然后重定向到您的主页。

来源:长时间显示Windows Phone启动屏

你想使用的解决方案(thread.sleep)不是一个很好的解决方案,它应该只用于你不打算放在Windows商店的应用程序。microsoft的官方解决方案是使用XAML页面作为启动屏幕(如polymorphin发布的)。我以前使用过xaml页面解决方案,它比阻塞UI线程要好得多,原因有两个:

  1. 阻塞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);

最新更新