3

私が取り組んでいるアプリがあります。スプラッシュ スクリーンを少なくとも 1 秒間表示する必要があります (最大 3 秒が推奨されます)。スプラッシュ スクリーン全体を垣間見ることができ、タイトルを読むことができるのに十分な長さです (快適に、そうする必要はありません)。消える前に捕まえようと頑張ってください)。

MSDN の Windows Phone 8 のスプラッシュスクリーンに関するドキュメントを読みましたが、次のように書かれています。

通常、アプリでスプラッシュ スクリーンを使用するのは、アプリの読み込みが異常に遅い場合、またはアプリにブランドを追加したい場合のみにしてください。アプリでスプラッシュ スクリーンを使用する場合は、2 つのオプションがあります。

私のアプリは、ユーザーがすぐに取得し、すぐに何かを実行してからアプリを終了する必要があるようなアプリではありません。そのため、急ぐ必要はありません。

これで、スプラッシュスクリーンが正常に表示されました。しかし問題は、アプリの読み込みが速すぎてスプラッシュスクリーンに気付かないことです。

プログラムでスプラッシュ スクリーンを 1 ~ 2 秒間表示するにはどうすればよいですか? 時間指定はできますか?長持ちさせることはできますか?

4

7 に答える 7

5

アプリケーションのロード中にスプラッシュスクリーンが表示されるため、時間はコードの複雑さによって異なります。スプラッシュ スクリーンを使用して XAML ページを作成し、それをエントリ ポイントとして設定し、目的の時間待ってからメイン ページにリダイレクトできます。

出典: Windows Phone のスプラッシュ スクリーンを長時間表示する

于 2013-06-10T15:12:21.413 に答える
5

使用したいソリューション (thread.sleep) はあまり良いソリューションではありません。Windows ストアに配置しないアプリにのみ使用する必要があります。Microsoft による公式の解決策は、XAML ページをスプラッシュ スクリーンとして使用することです (polymorphin によって投稿されています)。以前は xaml ページ ソリューションを使用していましたが、2 つの理由で 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

スプラッシュ スクリーンとまったく同じように見えるページを作成し、最初にスプラッシュ スクリーンの直後に表示するだけです。1 ~ 2 秒後にそこから移動します。

ただし、ユーザーが設定でオフにできるようにします。毎回必要以上にアプリの読み込みを待ちたいと思う人はいません。

于 2013-06-10T18:04:34.237 に答える
0

私はそのtutoを見つけました:

リンク

基本的にあなたがする必要があります:

  • xaml 'SplashPage.xaml' を作成します
  • 「SplashPage.xaml」の XML に:

    • ステータスバーの変更を非表示にするには: shell:SystemTray.IsVisible="True" -> shell:SystemTray.IsVisible="False"
    • 画像を追加してください:<Image Source="/splash.jpg" Stretch="Fill"/>
  • 「SplashPage.xaml」の CODE に:

  • 必要なすべてのコードを "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」の CODE に:
  • スタック内のすべてのページをリセットするには、次のようにします (そのコードを使用して、スタックから SplashPage を削除します :D ):
NavigationService.RemoveBackEntry();
于 2014-04-14T16:13:34.180 に答える
-1

ロード フェーズ中にアプリを 1 秒間スリープさせることはできますか?

C# で関数をスリープ / 一時停止する

于 2013-06-10T15:10:08.963 に答える