3

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

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

通常,只有当您的应用程序加载速度异常缓慢或您想为应用程序添加额外的品牌时,您才应该在应用程序中使用启动画面。如果您决定在应用程序中使用启动画面,您有两种选择。

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

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

如何以编程方式使启动画面出现一两秒钟?可以给它定个时间吗?你能让它停留更长时间吗?

4

7 回答 7

5

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

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

于 2013-06-10T15:12:21.413 回答
5

您要使用的解决方案(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
于 2013-06-10T20:04:23.967 回答
4

Just create a page which looks exactly like the splash screen and show that first, immediately after the splash screen. Navigate from it after a second or two.

Enable the user to switch it off in the settings, though. Nobody wants to wait more for the app to load than it's necessary every time.

于 2013-06-10T18:04:34.237 回答
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 秒钟。

于 2013-06-10T15:20:14.277 回答
0

我发现 tuto :

关联

基本上你需要做:

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

    • 隐藏状态栏更改: shell:SystemTray.IsVisible="True" -> shell:SystemTray.IsVisible="False"
    • 添加您的图像:<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));
  • 进入“MainPage.xaml”的代码:
  • 要重置堆栈中的所有页面,请执行此操作(使用该代码从堆栈中删除 SplashPage :D ):
NavigationService.RemoveBackEntry();
于 2014-04-14T16:13:34.180 回答
-1

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

在c#中休眠/暂停一个函数

于 2013-06-10T15:10:08.963 回答
-1

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

WPF SplashScreen ,如何使启动画面显示时间更长

SplashScreen splashScreen = new SplashScreen();
splashScreen.Show(false);
于 2013-06-10T15:20:48.003 回答