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
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Sostituire la GitHub Action di login su private registry
Eseguire una query su SQL Azure tramite un workflow di GitHub
Utilizzare politiche di resiliency con Azure Container App
Ottimizzazione dei block template in Angular 17
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Usare le variabili per personalizzare gli stili CSS
Sfruttare lo streaming di una chiamata Http da Blazor
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Copiare automaticamente le secret tra più repository di GitHub
Eseguire le GitHub Actions offline
I più letti di oggi
- PWAConf 2020 - Online
- Reactive form tipizzati con FormBuilder in Angular
- Utilizzare ChatGPT con Azure OpenAI
- Mantenere sempre reattiva una Lambda di AWS
- Messaggi in tempo reale con Blazor Server
- Una chat con #aspnetcore e #websockets https://aspit.co/bmh di @GentiliMoreno #webapi #aspnetcore2
- Autenticarsi in modo sicuro su Azure tramite GitHub Actions
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Creare una MarkupExtension per accedere alle proprietà statiche in Silverlight 5.0
- Navigare la struttura visuale di un UIElement fino a recuperare l'elemento logico in Silverlight 3.0