Formazione
Percorso di apprendimento
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Un controllo AnimatedIcon riproduce immagini animate in risposta all'interazione dell'utente e alle modifiche dello stato visivo.
Le icone animate possono attirare l'attenzione su un componente dell'interfaccia utente, come il pulsante successivo in un tutorial, o semplicemente riflettere l'azione associata all'icona in modo divertente e interessante.
Le animazioni personalizzate possono essere create con Adobe AfterEffects ed eseguito il rendering con la libreria Lottie-Windows da usare come icona animata nell'applicazione WinUI. Per altri dettagli, vedere Usare Lottie per creare contenuto animato per un oggetto AnimatedIcon più avanti in questo articolo.
L'esempio seguente mostra un'icona di ricerca animata di base creata in Adobe AfterEffects ed eseguito il rendering tramite Lottie.
Usare il controllo AnimatedIcon quando l'icona di un controllo deve essere animata in risposta all'interazione dell'utente con il controllo, ad esempio quando un utente passa il puntatore del mouse su un pulsante o lo fa clic.
Non usare animatedIcon se l'animazione non viene attivata da una transizione dello stato di visualizzazione e riproduce in un ciclo, riproduce una sola volta o può essere sospesa. Usa invece AnimatedVisualPlayer.
Non utilizzare AnimatedIcon per nessun elemento diverso da un'icona o se il controllo non supporta una proprietà IconElement o IconElementSource. Usa invece AnimatedVisualPlayer.
Quando non è necessaria un'icona animata, usare FontIcon, SymbolIcon o BitmapIcon.
AnimatedIcon è un elemento IconElement, che può essere usato ovunque sia necessario un elemento o IconElement (ad esempio NavigationViewItem.Icon) ed è controllato tramite una proprietà State.
AnimatedVisualPlayer è un lettore di animazione più generale, controllato tramite metodi come Play e Pause e può essere usato ovunque in un'applicazione.
La definizione di un'animazione per animatedIcon inizia lo stesso processo per definire un'animazione per animatedVisualPlayer. È necessario creare o ottenere il file Lottie per l'icona da aggiungere ed eseguire il file tramite LottieGen. LottieGen genera codice per una classe C++/WinRT, dalla quale è possibile creare un'istanza e usarla con AnimatedIcon.
Nota
Il controllo AutoSuggestBox usa la classe AnimatedVisuals.AnimatedFindVisualSource generata tramite lo strumento LottieGen.
Puoi anche definire marcatori nella definizione dell'animazione per indicare le posizioni temporali di riproduzione. È quindi possibile impostare lo stato AnimatedIcon su questi marcatori. Ad esempio, se hai una posizione di riproduzione nel file Lottie contrassegnato come "PointerOver", puoi impostare lo stato AnimatedIcon su "PointerOver" e spostare l'animazione in tale posizione di riproduzione.
La definizione di una proprietà colore nell'animazione Lottie denominata "Foreground" consente di impostare il colore usando la proprietà AnimatedIcon.Foreground.
Importante
Le informazioni e gli esempi in questo articolo sono ottimizzati per le app che usano Windows App SDK e WinUI 3, ma sono generalmente applicabili alle app UWP che usano WinUI 2. Per informazioni ed esempi specifici della piattaforma, consultare le indicazioni di riferimento sulle API UWP.
Questa sezione contiene informazioni necessarie per usare il controllo in un'app UWP o WinUI 2.
AnimatedIcon per le app UWP richiede WinUI 2. Per maggiori informazioni, incluse le istruzioni per l'installazione, vedere WinUI 2. Le API per questo controllo esistono nello spazio dei nomi Microsoft.UI.Xaml.Controls.
Per usare il codice in questo articolo con WinUI 2, usare un alias in XAML (si usa muxc
) per rappresentare le API della libreria dell'interfaccia utente di Windows incluse nel progetto. Per altre informazioni, vedere Attività iniziali di WinUI 2.
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
<muxc:AnimatedIcon />
L'app Raccolta WinUI 3 include esempi interattivi della maggior parte dei controlli e delle funzionalità di WinUI 3. Scaricare l'app da Microsoft Store od ottenere il codice sorgente su GitHub
Nell'esempio seguente viene illustrato un pulsante Indietro che visualizza un'icona indietro animata in un evento PointerEntered .
AnimatedBackVisualSource
è una classe creata con lo strumento da riga di comando LottieGen.<Button PointerEntered="Button_PointerEntered" PointerExited="Button_PointerExited">
<AnimatedIcon x:Name='BackAnimatedIcon'>
<AnimatedIcon.Source>
<animatedvisuals:AnimatedBackVisualSource/>
</AnimatedIcon.Source>
<AnimatedIcon.FallbackIconSource>
<SymbolIconSource Symbol='Back'/>
</AnimatedIcon.FallbackIconSource>
</AnimatedIcon>
</Button>
private void Button_PointerEntered(object sender, PointerRoutedEventArgs e)
{
AnimatedIcon.SetState(this.BackAnimatedIcon, "PointerOver");
}
private void Button_PointerExited(object sender, PointerRoutedEventArgs e)
{
AnimatedIcon.SetState(this.BackAnimatedIcon, "Normal");
}
Il controllo NavigationViewItem imposta automaticamente gli stati comuni su un oggetto AnimatedIcon in base allo stato del controllo, se tali marcatori sono definiti nell'animazione Lottie.
Ad esempio, l'esempio seguente illustra come impostare un'animazione personalizzata (GameSettingsIcon
) generata dallo strumento LottieGen:
<NavigationView.MenuItems>
<NavigationViewItem Content = "Game Settings">
<NavigationViewItem.Icon>
<AnimatedIcon x:Name='GameSettingsIcon'>
<AnimatedIcon.Source>
<animatedvisuals:AnimatedSettingsVisualSource/>
</AnimatedIcon.Source>
<AnimatedIcon.FallbackIconSource>
<FontIconSource FontFamily="Segoe MDL2 Assets" Glyph=""/>
</AnimatedIcon.FallbackIconSource>
</AnimatedIcon>
</NavigationViewItem.Icon>
</NavigationViewItem>
</NavigationView.MenuItems>
NavigationViewItem imposta automaticamente gli stati seguenti in AnimatedIcon:
Se GameSettingsIcon
è definito un marcatore per "NormalToPointerOver", l'icona verrà animata fino a quando il puntatore non si sposta sull'oggetto NavigationViewItem. Consulta la sezione seguente per ulteriori informazioni sulla creazione dei marcatori.
Per creare l'oggetto personalizzato GameSettingsIcon
nell'esempio precedente, eseguire un file JSON Lottie (con marcatori) tramite lo strumento Windows LottieGen per generare il codice di animazione come classe C#.
Dopo aver eseguito il file Lottie tramite LottieGen, è possibile aggiungere la classe di output CodeGen al progetto. Vedere il tutorial LottieGen per ulteriori informazioni.
L'impostazione dello stato AnimatedIcon su un nuovo valore imposta anche una posizione di riproduzione nell'animazione Lottie per la transizione dallo stato precedente al nuovo stato. Queste posizioni di riproduzione vengono identificate anche con marcatori nel file Lottie. È anche possibile definire indicatori specifici per l'inizio della transizione o la fine della transizione.
Ad esempio, il controllo AutoSuggestBox usa un oggetto AnimatedIcon che si anima con gli stati seguenti:
È possibile definire marcatori nel file Lottie con tali nomi di stato. È anche possibile definire i marcatori come segue:
L'algoritmo esatto usato per eseguire il mapping delle modifiche dello stato AnimatedIcon alle posizioni di riproduzione dei marcatori:
L'esempio seguente mostra il formato del marcatore in un file JSON Lottie. Per altri dettagli, vedere le linee guida animatedIcon.
"markers":[{"tm":0,"cm":"NormalToPointerOver_Start","dr":0},{"tm":9,"cm":"NormalToPointerOver_End","dr":0},
{"tm":10,"cm":"NormalToPressed_Start","dr":0},{"tm":19,"cm":"NormalToPressed_End","dr":0},
{"tm":20,"cm":"PointerOverToNormal_Start","dr":0},{"tm":29,"cm":"PointerOverToNormal_End","dr":0},
{"tm":30,"cm":"PointerOverToPressed_Start","dr":0},{"tm":39,"cm":"PointerOverToPressed_End","dr":0},
{"tm":40,"cm":"PressedToNormal_Start","dr":0},{"tm":49,"cm":"PressedToNormal_End","dr":0},
{"tm":50,"cm":"PressedToPointerOver_Start","dr":0},{"tm":69,"cm":"PressedToPointerOver_End","dr":0},
{"tm":90,"cm":"PressedToNormal_Start","dr":0},{"tm":99,"cm":"PressedToNormal_End","dr":0},
{"tm":100,"cm":"PressedToPointerOver_Start","dr":0},{"tm":101,"cm":"PressedToPointerOver_End","dr":0}]
L'esempio seguente è un pulsante che l'utente fa clic su Accetta una richiesta.
La MyAcceptAnimation
classe viene creata con lo strumento LottieGen .
FallbackIconSource verrà usato anziché l'animazione quando le animazioni non possono essere riprodotte, ad esempio nelle versioni precedenti di Windows che non supportano le animazioni Lottie.
Se l'utente finale disattiva le animazioni nelle impostazioni di sistema, AnimatedIcon visualizzerà il fotogramma finale della transizione di stato in cui si trovavano i controlli.
<Button PointerEntered="HandlePointerEntered" PointerExited="HandlePointerExited">
<AnimatedIcon x:Name='AnimatedIcon1'>
<local:MyAcceptAnimation/>
<AnimatedIcon.FallbackIconSource>
<SymbolIconSource Symbol='Accept'/>
</AnimatedIcon.FallbackIconSource>
</AnimatedIcon>
</Button>
private void Button_PointerEntered(object sender, PointerRoutedEventArgs e)
{
AnimatedIcon.SetState(this.AnimatedIcon1, "PointerOver");
}
private void Button_PointerExited(object sender, PointerRoutedEventArgs e)
{
AnimatedIcon.SetState(this.StackPaAnimatedIcon1nel1, "Normal");
}
Feedback su Windows developer
Windows developer è un progetto di open source. Selezionare un collegamento per fornire feedback:
Formazione
Percorso di apprendimento
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization