Lo splash screen è quell'immagine che appare all'avvio dell'applicazione e "intrattiene" l'utente durante il caricamento iniziale dell'applicazione. Il tempo di visualizzazione che trascorre parte dalla pressione dell'utente sul nome dell'app, fino a quando la prima pagina è stata caricata e visualizzata. Per caricamento intendiamo quelle attività inerenti all'interfaccia e non rientrano attività asincrone come le chiamate HTTP o su altri thread.
Ci sono app però, che per mostrare la prima pagina necessitano di effettuare anche questo genere di operazioni asincrone, e quindi viene utile mostrare all'utente lo splash screen anche durante tali attività. Il trucco per raggiungere questo obbiettivo consiste nell'inserire nella prima pagina di navigazione la stessa immagine dello splash screen, e in essa avviare tutte le attività asincrone. Preparate tutte le informazioni e memorizzate in classi statiche, o oggetti condivisi tra le pagine, possiamo in automatico navigare alla seconda pagina, che di fatto è la vera pagina iniziale. In essa è fondamentale scrivere le seguenti righe di codice:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); while (this.NavigationService.CanGoBack) this.NavigationService.RemoveBackEntry(); }
In questo modo l'utente, se preme back, esce dall'applicazione e non torna alla pagina di splash screen, come è normale che sia.
A questo punto possiamo scegliere di attuare alcuni piccoli accorgimenti che mirano a rendere il più leggero possibile l'avvio dell'app, in modo da visualizzare immediatamente la pagina di splash screen. Essi sono:
- Mettere il minore numero possibile di risorse nel file App.xaml;
- Impostare tutte le immagini con la build action su "Content" e non su "Resource";
- Eseguire nel costruttore o nel metodo OnNavigatedTo della pagina di splash screen, solo il codice necessario per avviare su un altro thread le operazioni di preparazione dei dati.
Seguite queste istruzioni possiamo, nella pagina di splash screen, inserire animazioni il cui primo fotogramma corrisponda alla immagine di splash screen, in modo da rendere totalmente trasparente all'utente il nostro trucco. Infine, se utilizziamo animazioni che lavorano solo su RenderTransform e non sul layout, otteniamo animazioni fluide che non subiscono rallentamenti a causa dall'attività in background di download ed elaborazioni dei dati.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
C# 12: Cosa c'è di nuovo e interessante
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Aggiungere interattività lato server in Blazor 8
Utilizzare gli snapshot con Azure File shares
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
Evitare la script injection nelle GitHub Actions
Eseguire le GitHub Actions offline
Effettuare il binding di date in Blazor
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions