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

时间:2013-06-10 15:06:10

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

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

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

  

通常,只有在您的应用中,才应在应用中使用启动画面   加载或者想要添加其他品牌的速度非常慢   应用。如果您决定在应用中使用启动画面,则可以   两个选项。

我的应用程序不是那种用户需要快速获取,快速执行某些操作然后离开应用程序的应用程序 - 因此不需要任何匆忙的事情。

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

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

7 个答案:

答案 0 :(得分:5)

  

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

来源: Display Windows Phone Splash Screen For Longer Period

答案 1 :(得分:5)

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

  1. 阻止UI线程并不好,可能会在Windows应用商店验证过程中标记您的应用,使其无法通过。
  2. 在启动画面中,您有时间使用异步模型初始化您的应用程序组件。
  3. 在之前的项目中,我必须显示启动画面3秒钟(它是一个动画gif),在此期间,我能够与服务器建立连接并使用类似于此的代码启动地理定位服务: e.g。

    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
    

答案 2 :(得分:4)

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

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

答案 3 :(得分: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秒钟。

答案 4 :(得分:0)

我发现tuto:

link

基本上你需要这样做:

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

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

  
      
  • 将您需要的所有代码添加到“Loader”中   块引用
  •   
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();

答案 5 :(得分:-1)

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

Sleep / pause a function in c#

答案 6 :(得分:-1)

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

WPF SplashScreen , how to make splashscreen showing longer

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