繁体   English   中英

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

[英]How to make splash screen appear for longer

我有一个我正在努力的应用程序。 我需要启动画面显示至少1秒钟(最好是3秒钟) - 只需要足够长的时间让你能够瞥见整个启动画面并能够阅读标题(舒适,不必在它消失之前尽力抓住它)。

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

通常情况下,只有当您的应用加载异常缓慢或者您想为应用添加其他品牌时,才应在应用中使用启动画面。 如果您决定在应用中使用闪屏,则有两种选择。

我的应用程序不是那种应用程序,用户需要快速,快速做一些事情,然后离开应用程序 - 所以没有什么需要匆忙。

所以,我成功地让闪屏出现了。 但是,问题是应用程序加载太快 ,您无法注意到闪屏。

如何以编程方式使启动画面显示一两秒钟? 你能设定时间吗? 你可以让它保持更长时间吗?

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

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

您想要使用的解决方案(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

只需创建一个看起来与启动画面完全相同的页面,然后在启动画面后立即显示。 一两秒后从它导航。

但是,允许用户在设置中将其关闭。 每次都没有人愿意等待更多的应用程序加载。

我无法相信我的记忆有时会有多糟糕。 我刚刚在一个较旧的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秒钟。

我发现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();

您可以在加载阶段暂停应用程序一秒钟吗?

在c#中休眠/暂停一个功能

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

WPF SplashScreen,如何使炫屏显示更长时间

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM