Comment faire apparaître l'écran de démarrage plus longtemps

J'ai une application sur laquelle je travaille. J'ai besoin que l'écran de démarrage s'affiche pendant au moins 1 seconde (3 secondes maximum sont préférées), le temps que vous puissiez avoir un aperçu de tout l'écran de démarrage et pouvoir lire le titre (confortablement, sans devoir essaie de l’attraper avant de partir).

J'ai lu la documentation sur Splashscreens sur Windows Phone 8 sur MSDN et il est écrit:

En règle générale, vous devez utiliser un écran de démarrage dans votre application uniquement si celle-ci   est inhabituellement lent à charger ou si vous souhaitez ajouter une marque supplémentaire à   l'application . Si vous décidez d'utiliser un écran de démarrage dans votre application, vous devez   deux options.

Mon application n'est pas le genre d'application où les utilisateurs auront besoin de l'obtenir rapidement, de faire quelque chose rapidement puis de quitter l'application. Il n'y a donc aucune raison de précipiter quoi que ce soit.

Ainsi, j'ai réussi à faire apparaître l'écran de démarrage. MAIS, le problème est que l'application charge trop rapidement pour que vous puissiez remarquer l'écran de démarrage.

Comment puis-je programmer par programme l'écran de démarrage pour une seconde ou deux? Pouvez-vous définir une heure dessus? Pouvez-vous le faire rester plus longtemps?

3
Puis désactivez-le dans les paramètres.
ajouté l'auteur jay_t55, source
Pourquoi limiter l'application à l'endroit où elle peut se démarquer?
ajouté l'auteur jay_t55, source
Personnellement, même si je n'ai pas besoin d'accéder à l'application rapidement, cela m'agacerait encore chaque fois que l'écran de démarrage apparaît plus d'une seconde. Même une seconde, c'est déjà pas mal.
ajouté l'auteur JustAnotherUserYouMayKnow, source
Paramètres -> "Réduire l’écran d’écran d’accueil" .... Ouais. Bon un! Je pensais juste "Pourquoi pas en premier lieu, si c'est possible?!" Voulez-vous que votre application se démarque avec un Splashscreen ou avec l'application elle-même?
ajouté l'auteur JustAnotherUserYouMayKnow, source

7 Réponses

L’écran de démarrage s’affiche pendant le chargement de votre application.   le temps dépend donc de la complexité de votre code. Vous pouvez créer un   Page XAML avec votre écran de démarrage, définissez-le comme point d’entrée, attendez la   heure souhaitée puis redirigez-vous vers votre page principale.

Source: Display Windows Phone Splash Screen For Longer Period

5
ajouté

La solution que vous souhaitez utiliser (thread.sleep) n'est pas une très bonne solution, elle ne devrait être utilisée que pour une application que vous n'allez pas mettre dans le Windows Store. La solution officielle de Microsoft consiste à utiliser une page XAML en tant qu’écran de démarrage (tel que publié par la polymorphine). J'ai utilisé la solution de page xaml auparavant et c'est bien mieux que de bloquer le thread d'interface utilisateur pour deux raisons:

  1. Le blocage du fil de l'interface utilisateur n'est pas correct et peut signaler votre application lors du processus de validation du magasin Windows, ce qui la empêche de passer.
  2. Au cours de l'écran de démarrage, vous avez le temps d'initialiser votre composant d'application à l'aide du modèle async.

Dans un projet précédent, je devais afficher l'écran de démarrage pendant 3 secondes (il s'agissait d'un gif animé), ce qui m'a permis d'établir une connexion avec le serveur et de démarrer le service de géolocalisation à l'aide d'un code similaire à celui-ci: par exemple.

List tasks=new List();
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
5
ajouté
Hey c'est génial. Et vous m'avez évité d'avoir à soumettre à nouveau mon application. Je vous remercie! :-)
ajouté l'auteur jay_t55, source

Créez simplement une page qui ressemble exactement à l’écran de démarrage et montrez-la en premier, immédiatement après l’écran de démarrage. Naviguez après une seconde ou deux.

Permettez à l'utilisateur de le désactiver dans les paramètres, cependant. Personne ne veut attendre que l'application soit chargée plus que nécessaire à chaque fois .

4
ajouté

Pouvez-vous juste dormir l'application pendant une seconde pendant sa phase de chargement?

mettre en veille/suspendre une fonction en C#

1
ajouté

Une recherche rapide montre un autre utilisateur qui a eu ce problème:

wpf SplashScreen, comment rendre l'écran de démarrage plus long

SplashScreen splashScreen = new SplashScreen();
splashScreen.Show(false);
1
ajouté
Votre réponse fonctionne pour WPF, pas pour Windows Phone.
ajouté l'auteur Kevin Gosse, source

Je ne peux pas croire à quel point ma mémoire peut être mauvaise parfois. Je viens de trouver cela dans l'une de mes anciennes applications 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);
    }

Fonctionne comme un charme! Mettez ceci dans votre fichier App.xaml.cs et il affichera le SplashScreen (si vous en avez un) pendant 3 secondes.

0
ajouté

J'ai trouvé ce tuto:

lien

Fondamentalement, vous devez faire:

  • create a xaml 'SplashPage.xaml'
  • into the "SplashPage.xaml"'s xml :

    • To hide the status bar change : shell:SystemTray.IsVisible="True" -> shell:SystemTray.IsVisible="False"
    • Add you image :
  • into the "SplashPage.xaml"'s CODE :

      
  • Ajoutez tout le code dont vous avez besoin dans "Loader"   Blockquote
  •   
public SplashPage()
        {
            InitializeComponent();
            Loaded += SplashPage_Loaded;
        }

        void SplashPage_Loaded(object sender, RoutedEventArgs e)
        {
            //ADD YOUR CODE
        }
}
      
  • et lorsque vous souhaitez afficher votre appel 'MainPage.xaml':
  •   
NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
  • dans le code de "MainPage.xaml":
      
  • Pour réinitialiser toutes les pages de la pile, procédez comme suit (avec ce code, vous supprimez SplashPage de la pile: D):
  •   
NavigationService.RemoveBackEntry();
0
ajouté