簡體   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