【问题标题】:How to make splash screen appear for longer如何使启动画面显示更长时间
【发布时间】:2013-06-10 15:06:10
【问题描述】:

我有一个正在开发的应用程序。我需要启动屏幕显示至少 1 整秒(最好最多 3 秒) - 足够长的时间让您能够瞥见整个启动屏幕并能够阅读标题(很舒服,不必努力在它消失之前抓住它)。

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

通常情况下,您应该在您的应用中使用启动画面 加载速度异常缓慢或者如果您想添加额外的品牌 应用程序。如果您决定在您的应用程序中使用启动画面,您有 两个选项。

我的应用不是那种用户需要快速上手、快速做某事然后离开应用的应用——所以没有必要匆忙做任何事情。

所以,我已经成功地让启动画面出现了。但是,问题在于应用加载太快,您无法注意到启动画面。

如何以编程方式使初始屏幕显示一两秒?可以给它定个时间吗?你能让它保持更长时间吗?

【问题讨论】:

  • 就个人而言,即使我不需要快速访问该应用程序,每次启动画面出现超过一秒时,它仍然会让我烦恼。哪怕一秒也差不多了..
  • 然后在设置中禁用它。
  • 设置 -> “使启动画面更短”....是的。好一个!我只是想“如果可能的话,为什么不首先呢?!”您希望您的应用通过 Splashscreen 还是应用本身脱颖而出?
  • 为什么要将应用限制在可以脱颖而出的地方?

标签: c# .net windows-phone-7 xaml windows-phone-8


【解决方案1】:

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

来源: Display Windows Phone Splash Screen For Longer Period

【讨论】:

    【解决方案2】:

    您要使用的解决方案 (thread.sleep) 不是一个很好的解决方案,它应该只用于您不会放入 Windows 商店的应用程序。微软的官方解决方案是使用 XAML 页面作为初始屏幕(由 polymorphin 发布)。我之前使用过 xaml 页面解决方案,它比阻塞 UI 线程要好,原因有两个:

    1. 阻塞 UI 线程不好,可能会在 Windows 商店验证过程中标记您的应用,使其无法通过。
    2. 在初始屏幕期间,您有时间使用异步模型初始化应用组件。

    在以前的项目中,我必须显示启动画面 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
    

    【讨论】:

    • 嘿,这太棒了。你让我不必重新提交我的应用程序。谢谢! :-)
    【解决方案3】:

    只需创建一个看起来与初始屏幕完全相同的页面,并在初始屏幕之后立即显示该页面。一两秒后从它导航。

    不过,允许用户在设置中将其关闭。没有人愿意每次都等待应用加载所需的时间。

    【讨论】:

      【解决方案4】:

      我不敢相信我的记性有时会如此糟糕。我刚刚在我的一个较旧的 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 秒。

      【讨论】:

        【解决方案5】:

        我找到了 tuto :

        link

        基本上你需要做的:

        • 创建一个 xaml 'SplashPage.xaml'
        • 进入“SplashPage.xaml”的 XML :

          • 隐藏状态栏更改:shell:SystemTray.IsVisible="True" -> shell:SystemTray.IsVisible="False"
          • 添加您的图片:&lt;Image Source="/splash.jpg" Stretch="Fill"/&gt;
        • 进入“SplashPage.xaml”的代码:

        • 将您需要的所有代码添加到“加载器”中 块引用
        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));
        
        • 进入“MainPage.xaml”的代码:
        • 要重置堆栈中的所有页面,请执行此操作(使用该代码从堆栈中删除 SplashPage :D):
        NavigationService.RemoveBackEntry();
        

        【讨论】:

          【解决方案6】:

          您可以在应用加载阶段让应用休眠一秒钟吗?

          Sleep / pause a function in c#

          【讨论】:

            【解决方案7】:

            快速搜索显示另一个遇到此问题的用户:

            WPF SplashScreen , how to make splashscreen showing longer

            SplashScreen splashScreen = new SplashScreen();
            splashScreen.Show(false);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-04-17
              • 2012-04-23
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多