Panoramica dell'animazione di Windows
Questa panoramica fornisce un'introduzione a Gestione animazioni di Windows e si concentra su componenti e concetti chiave. Per altre informazioni sui storyboard e sulle transizioni, vedere Panoramica di Storyboard.
In questo argomento sono incluse le sezioni seguenti:
- Concetti di base
- Componenti dell'animazione di Windows
- API animazione di Windows
- Configurazioni
- Funzionalità avanzate
- Argomenti correlati
Concetti di base
L'animazione è una sequenza di immagini ancora successive che generano un'illusione di movimento quando viene riprodotta. L'uso dell'animazione interattiva nell'interfaccia utente può offrire un'applicazione una personalità unica e migliorare l'esperienza utente. L'animazione può aiutare a comunicare modifiche importanti dello stato nell'interfaccia utente e aiutare a gestire la complessità dell'interfaccia utente. L'animazione può anche aggiungere alla percezione dell'utente la qualità di un'applicazione.
Come esempi, l'animazione di Windows viene usata nella barra delle applicazioni per semplificare la gestione e l'accesso ai file e ai programmi e al magnifier per ingrandire diverse parti dello schermo per semplificare la visualizzazione degli utenti.
Le unità fondamentali di un'animazione sono la caratteristica di un elemento visivo da animare e la descrizione di come tale caratteristica cambia nel tempo. Un'applicazione può animare una vasta gamma di caratteristiche, ad esempio posizione, colore, dimensioni, rotazione, contrasto e opacità.
In Animazione di Windows, una variabile di animazione rappresenta la caratteristica da animare. Una transizione descrive il modo in cui il valore della variabile di animazione cambia quando si verifica l'animazione. Ad esempio, un elemento visivo potrebbe avere una variabile di animazione che specifica la relativa opacità e un'azione utente potrebbe generare una transizione che accetta tale opacità da un valore di 50 a 100, che rappresenta un'animazione da semi-trasparente a completamente opaca.
Un storyboard è un set di transizioni applicate a una o più variabili di animazione nel tempo. Un'applicazione visualizza animazioni creando e giocando storyboard e quindi disegnando sequenze di fotogrammi discreti come i valori delle variabili di animazione cambiano nel tempo.
Componenti dell'animazione di Windows
L'animazione di Windows è costituita dai componenti seguenti:
-
gestione animazione
-
Le applicazioni usano un oggetto gestione animazioni per creare variabili di animazione e storyboard, pianificazioni e animazioni di controllo e aggiornare le informazioni sullo stato prima che l'applicazione disegna ogni frame. Un singolo oggetto gestione animazioni gestisce in genere tutte le animazioni in un'applicazione e quindi ha il controllo globale su tutti gli storyboard pianificati.
-
variabili di animazione
-
Prima di avviare qualsiasi animazione, un'applicazione deve creare oggetti variabili di animazione. Una variabile di animazione rappresenta un aspetto di un elemento visivo da animare. La variabile è un valore a virgola mobile scalare, anche se il valore può essere arrotondato a un valore intero.
Una variabile di animazione ha in genere la stessa durata dell'elemento visivo da animare. Il valore iniziale di una variabile di animazione viene specificato quando viene creata la variabile. Successivamente, il relativo valore non può essere modificato direttamente; deve essere aggiornato tramite gestione animazioni.
Una variabile di animazione può essere identificata da un tag, ovvero un associazione di un identificatore intero con un puntatore a un oggetto COM. Un tag non deve essere univoco, a meno che l'applicazione non lo usi per cercare una variabile. Per impostazione predefinita, una variabile di animazione non dispone di un tag e qualsiasi tentativo di lettura del tag avrà esito negativo fino a quando non ne è stato impostato uno.
-
sistema di temporizzazione
-
L'animazione di Windows include un sistema di temporizzazione che consente di garantire il rendering delle animazioni a una frequenza di fotogrammi uniforme e coerente, riducendo anche l'uso delle risorse di sistema per il rendering quando il sistema è occupato. Un timer consente di gestire il rendering dell'animazione indicando automaticamente il passaggio di una piccola unità di tempo, denominata tick. Il sistema di temporizzazione monitora le prestazioni complessive del sistema e limita le animazioni aumentando dinamicamente o riducendo la frequenza dei tick. Le applicazioni possono consentire a un'unità timer di gestire l'animazione e possono registrare un gestore per ricevere una notifica prima e dopo l'aggiornamento del gestore per ogni segno di spunta. Le applicazioni possono specificare la frequenza minima di fotogrammi di animazione accettabile per un timer e ricevere una notifica se la frequenza effettiva dei fotogrammi di un'animazione scende al di sotto di questa frequenza.
Per conservare le risorse di sistema, è possibile configurare un timer per disabilitarsi quando non viene eseguita alcuna animazione.
API animazione di Windows
L'API animazione di Windows è un'API basata su COM a thread singolo che fornisce le funzionalità seguenti per gli sviluppatori:
- Oggetto gestione animazioni, UIAnimationManager, per la creazione di oggetti di animazione e il controllo delle animazioni
- Variabili di animazione e storyboard
- Libreria di base, UIAnimationTransitionLibrary, di transizioni pronte per l'uso
- Oggetto timer, UIAnimationTimer, per determinare l'ora corrente e, facoltativamente, per l'animazione di guida
- Hook eventi per il monitoraggio dello stato e dello stato di avanzamento dell'animazione
Per informazioni di riferimento sull'API complete, vedere Informazioni di riferimento sull'animazione di Windows. Ad esempio, vedere Attività di animazione di Windows e Esempi di animazione di Windows.
Configurazioni
Le applicazioni devono ottenere l'ora corrente prima di pianificare una nuova animazione. Di seguito sono riportati i meccanismi di intervallo supportati dall'animazione di Windows:
animazione Application-Driven
Le applicazioni che usano un'API grafica accelerata hardware possono essere sincronizzate con la frequenza di aggiornamento del monitoraggio per eseguire il rendering di animazioni fluide. In alternativa, un'applicazione può usare un meccanismo di intervallo personalizzato per determinare quando disegnare ogni frame di un'animazione. In entrambi i casi, l'applicazione indicherà alla gestione animazioni quando aggiornarne lo stato. Un timer di animazione può comunque essere usato per determinare l'ora corrente con precisione elevata, nelle unità richieste dal responsabile dell'animazione.
Il diagramma seguente illustra le interazioni tra un'applicazione e i componenti di Animazione di Windows quando l'applicazione sta guidando direttamente gli aggiornamenti dell'animazione.
Nella configurazione più semplice, un'applicazione verrà ridisegnata ogni volta che lo schermo viene aggiornato, anche quando non vengono riprodotte animazioni. Per evitare il lavoro sprecato, un'applicazione può registrare un gestore eventi di gestione per ricevere una notifica quando sono previste animazioni pianificate e può rilevare quando la pianificazione è vuota in modo che possa interrompere il disegno.
animazione Timer-Driven
Invece di aggiornare direttamente la gestione animazioni, le applicazioni possono consentire al timer di animazione di indicare al manager di animazione quando aggiornarne lo stato e ricevere semplicemente una notifica quando si è verificato ogni aggiornamento. Questo approccio è consigliato per le API grafiche meno recenti. In generale, se è possibile sincronizzare con la frequenza di aggiornamento del monitoraggio, è preferibile farlo e usare l'animazione basata sull'applicazione.
Il diagramma seguente illustra le interazioni tra un'applicazione e i componenti di Animazione di Windows quando il timer di animazione sta guidando gli aggiornamenti dell'animazione.
Il timer può essere configurato per l'esecuzione solo quando vengono pianificate le animazioni; in questo modo è una semplice questione di passaggio di un determinato parametro quando il timer e la gestione animazione sono connessi.
Funzionalità avanzate
Oltre a una base di base per supportare l'animazione, l'animazione di Windows include il supporto per diverse tecniche di animazione avanzate, tra cui:
-
durata sensibile al contesto
-
La durata di una transizione non deve essere fissa; può essere determinata in base al valore e alla velocità della variabile animata all'inizio della transizione.
-
corrispondenza velocità
-
Il movimento è in genere più piacevole per l'occhio se la posizione e la velocità di un oggetto mobile non saltano immediatamente tra i valori. Quando un nuovo storyboard interrompe uno che sta attualmente giocando, la corrispondenza della velocità consente al nuovo storyboard di prendere senza problemi la posizione in cui è terminata la precedente.
-
gestione della contesa
-
Se due storyboard devono aggiornare contemporaneamente la stessa variabile di animazione, si verifica un conflitto di pianificazione. Anziché richiedere una priorità numerica specifica per ogni storyboard, l'animazione di Windows consente all'applicazione di determinare le priorità relative di qualsiasi storyboard.
Gestione della contesa
Gli sviluppatori possono implementare un callback di confronto prioritario per confrontare la priorità del storyboard di essere pianificato e lo storyboard già incluso nella pianificazione. Un'applicazione che implementa un confronto con priorità può usare qualsiasi logica preferita per determinare quando un storyboard precede un altro. Per risolvere il conflitto di pianificazione, l'animazione di Windows chiede all'applicazione quale di queste azioni può essere eseguita, nell'ordine seguente:
- Annullare lo storyboard pianificato. Se lo storyboard pianificato non ha ancora iniziato a giocare, potrebbe essere annullato e immediatamente rimosso dalla pianificazione.
- Tagliare lo storyboard pianificato. Quando un nuovo storyboard taglia uno storyboard pianificato, lo storyboard pianificato smette di influire sulla variabile non appena il nuovo storyboard inizia ad animarlo. Le velocità sono corrispondenti, consentendo al nuovo storyboard di raccogliere senza problemi la precedente.
- Terminare lo storyboard pianificato. Un storyboard può essere concluso solo se contiene un ciclo che ripete in modo indefinito. Se il storyboard si trova in un ciclo di questo tipo, la ripetizione corrente viene completata e il resto del storyboard gioca. Se il ciclo non è ancora iniziato quando viene concluso un storyboard, il ciclo viene ignorato completamente.
- Comprimere lo storyboard pianificato. Se l'eliminazione o l'annullamento dello storyboard pianificato non è un'opzione, il storyboard può essere completato. L'animazione di Windows introduce la possibilità di comprimere il tempo disponibile per lo storyboard pianificato (e gli storyboard pianificati prima), in modo che le variabili raggiungano più rapidamente lo stato finale. Quando viene applicata la compressione, il tempo viene temporaneamente accelerato per gli storyboard interessati, quindi giocano più velocemente.
Se nessuna delle azioni precedenti è consentita dagli oggetti di confronto di priorità registrati, il tentativo di pianificare il nuovo storyboard ha esito negativo. Per impostazione predefinita, tutti i storyboard possono essere ritagliati, conclusi o compressi per evitare errori, ma nessuno può essere annullato.
Il diagramma seguente illustra il ciclo di vita di uno storyboard usando gli stati definiti dall'enumerazione UI_ANIMATION_STORYBOARD_STATUS . Le applicazioni usano l'API animazione di Windows per creare uno storyboard e inviarla per la pianificazione. Il responsabile dell'animazione pianifica lo storyboard e gestisce l'animazione.
Per altre informazioni sulla pianificazione e la gestione dello storyboard, vedere Panoramica di Storyboard.
Argomenti correlati