Compartilhar via


AnimatedIcon Classe

Definição

Representa um ícone que exibe e controla um visual que pode animar em resposta à interação do usuário e às alterações de estado visual.

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.XamlContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.UI.Xaml.Markup.ContentProperty(Name="Source")]
class AnimatedIcon : IconElement
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.XamlContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.UI.Xaml.Markup.ContentProperty(Name="Source")]
public class AnimatedIcon : IconElement
Public Class AnimatedIcon
Inherits IconElement
Herança
AnimatedIcon
Atributos

Exemplos

Dica

Para obter mais informações, diretrizes de design e exemplos de código, consulte Ícone animado.

Os aplicativos da Galeria do WinUI 2 incluem exemplos interativos da maioria dos controles, recursos e funcionalidades do WinUI 2. Obtenha o aplicativo na Microsoft Store ou o código-fonte no GitHub.

Adicionar um AnimatedIcon a um botão

Este exemplo demonstra um botão voltar que exibe um ícone de seta para trás que anima quando ocorrem eventos de ponteiro.

<!-- 
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
xmlns:animatedvisuals="using:Microsoft.UI.Xaml.Controls.AnimatedVisuals"
-->

<AppBarButton x:Name="BackButton" Label="Back"
              muxc:AnimatedIcon.State="Normal"
              PointerEntered="AppBarButton_PointerEntered"
              PointerExited="AppBarButton_PointerExited">
    <muxc:AnimatedIcon>
        <animatedvisuals:AnimatedBackVisualSource/>
        <muxc:AnimatedIcon.FallbackIconSource>
            <muxc:SymbolIconSource Symbol="Back"/>
        </muxc:AnimatedIcon.FallbackIconSource>
    </muxc:AnimatedIcon>
</AppBarButton>
// using muxc = Microsoft.UI.Xaml.Controls;

// Add handlers.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    SettingsButton.AddHandler(UIElement.PointerPressedEvent, 
        new PointerEventHandler(AppBarButton_PointerPressed), true);
    SettingsButton.AddHandler(UIElement.PointerReleasedEvent, 
        new PointerEventHandler(AppBarButton_PointerReleased), true);
    base.OnNavigatedTo(e);
}

// Remove handlers.
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    SettingsButton.RemoveHandler(UIElement.PointerPressedEvent, 
        (PointerEventHandler)AppBarButton_PointerPressed);
    SettingsButton.RemoveHandler(UIElement.PointerReleasedEvent, 
        (PointerEventHandler)AppBarButton_PointerReleased);
    base.OnNavigatedFrom(e);
}

private void AppBarButton_PointerEntered(object sender, PointerRoutedEventArgs e)
{
    muxc.AnimatedIcon.SetState((UIElement)sender, "PointerOver");
}

private void AppBarButton_PointerPressed(object sender, PointerRoutedEventArgs e)
{
    muxc.AnimatedIcon.SetState((UIElement)sender, "Pressed");
}

private void AppBarButton_PointerReleased(object sender, PointerRoutedEventArgs e)
{
    muxc.AnimatedIcon.SetState((UIElement)sender, "Normal");
}

private void AppBarButton_PointerExited(object sender, PointerRoutedEventArgs e)
{
    muxc.AnimatedIcon.SetState((UIElement)sender, "Normal");
}

Comentários

Defina a propriedade AnimatedIcon.Source para especificar o visual animado para o ícone. O WinUI fornece visuais animados para alguns ícones comuns no namespace Microsoft.UI.Xaml.Controls.AnimatedVisuals .

Em alguns casos, as configurações ou limitações do sistema podem impedir que o ícone seja animado.

  • Se o usuário desativar animações nas configurações do sistema, AnimatedIcon exibirá o quadro final da transição de estado em que o controle estava.
  • Especifique um FallbackIconSource a ser usado quando não houver suporte para animações, como em versões mais antigas do Windows que não dão suporte a animações Lottie.

Animações personalizadas

Você pode criar animações personalizadas para usar como um ícone animado em seu aplicativo. As animações podem ser criadas com o Adobe AfterEffects e, em seguida, você pode usar essa saída com a biblioteca Lottie-Windows para gerar uma classe personalizada que implementa IAnimatedVisualSource2. Você pode usar essa classe como a Origem para um ícone animado. Para obter mais informações, consulte Usar Lottie para criar conteúdo animado para um AnimatedIcon.

Controlar o estado do ícone animado

Você altera a posição de reprodução e o estado da animação definindo a propriedade anexada AnimatedIcon.State . A propriedade state usa um valor de cadeia de caracteres que descreve o estado visual, como "Normal", "PointerOver" ou "Pressed". Você também pode especificar uma transição de estado específica, como "PressedToNormal".

Um ícone animado Source contém Marcadores que mapeiam uma posição na linha do tempo de animação para um estado visual. Os valores de cadeia de caracteres que um Source dá suporte para definir a State propriedade anexada são definidos na Markers coleção. Para obter mais informações, consulte Definir marcadores AnimatedIcon.

Fontes visuais animadas usadas em modelos de controle geralmente têm um conjunto mais complexo desse Markers mapa para controlar estados, enquanto visuais animados para uso mais geral geralmente têm um conjunto mais simples desse mapa para eventos de Markers ponteiro.

Onde definir o estado

Você pode definir a propriedade no AnimatedIcon ou em um ancestral na árvore XAML. Em ambos os casos, você precisa usar a sintaxe de propriedade anexada, da seguinte maneira:

<muxc:AnimatedIcon muxc:AnimatedIcon.State="Normal">...</muxc:AnimatedIcon>

Importante

Se você adicionar um AnimatedIcon à árvore XAML e definir a State propriedade em um elemento ancestral, a State propriedade deverá ser definida como um valor inicial antes que o ícone animado seja carregado pela primeira vez para que o ícone seja animado. Normalmente, você define o estado inicial em XAML, conforme mostrado aqui.

<StackPanel muxc:AnimatedIcon.State="Normal" ...>
   <muxc:AnimatedIcon>
       <animatedvisuals:AnimatedBackVisualSource/>
   </muxc:AnimatedIcon>
</StackPanel>

Usar estados visuais

Você pode adicionar um AnimatedIcon ao ControlTemplate de um controle XAML e usar um VisualStateManager para definir seu estado. Alguns controles, como NavigationViewItem, definem automaticamente o estado para um AnimatedIcon que é definido como seu Ícone.

Para ver um exemplo que define AnimatedIcon.State em um estado visual de modelo de controle, consulte CheckBox_themeresources.xaml no repositório GitHub do WinUI. O CheckBox controle usa AnimatedAcceptVisualSource para sua marca de seleção. Os setters de estado visual são semelhantes a este:

<VisualState x:Name="CheckedPointerOver">
    ...
    <VisualState.Setters>
        <Setter Target="CheckGlyph.(AnimatedIcon.State)" Value="PointerOverOn"/>
    </VisualState.Setters>
</VisualState>

Manipular eventos de ponteiro

Para fazer a AnimatedIcon resposta à interação do usuário, você precisa definir a propriedade anexada AnimatedIcon.State em resposta a alguns eventos de ponteiro. Esta tabela mostra os eventos de ponteiro que você normalmente manipulará e estados comuns que são mapeados para esses eventos. (No entanto, nem todas as fontes de ícone animada serão mapeadas exatamente para esses estados.)

Evento Estado
PointerEntered "PointerOver"
PointerPressed "Pressed"
PointerReleased "Normal"
PointerExited "Normal"

Dica

Se você colocar o dentro de AnimatedIcon um Botão ou outro controle que tenha um evento Click , os PointerPressed eventos e PointerReleased serão marcados como Manipulados. Para manipular esses eventos em um botão, use o método AddHandler para conectar o manipulador de eventos e especificar handledEventsToo como true. Use RemoveHandler para desconectar o manipulador de eventos.

Consulte a seção Exemplos para obter um código de exemplo que demonstre esses manipuladores de eventos.

Propriedades anexadas XAML

AnimatedIcon é a classe de serviço host para uma propriedade anexada XAML.

Para dar suporte ao acesso do processador XAML às propriedades anexadas e também para expor operações equivalentes get e set ao código, cada propriedade anexada XAML tem um par de métodos de acessador Get e Set. Outra maneira de obter ou definir o valor no código é usar o sistema de propriedades de dependência, chamando GetValue ou SetValue e passando o campo identificador como o identificador de propriedade de dependência.

Construtores

AnimatedIcon()

Inicializa uma nova instância da classe AnimatedIcon .

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

Propriedades

FallbackIconSource

Obtém ou define o ícone estático a ser usado quando o ícone animado não pode ser executado.

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

FallbackIconSourceProperty

Identifica a propriedade de dependência FallbackIconSource .

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

MirroredWhenRightToLeft

Obtém ou define um valor que indica se o ícone é espelhado quando o FlowDirection é RightToLeft.

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

MirroredWhenRightToLeftProperty

Identifica a propriedade de dependência MirroredWhenRightToLeft .

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

Source

Obtém ou define o visual animado mostrado pelo AnimatedIcon objeto .

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

SourceProperty

Identifica a propriedade Dependência de origem .

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

StateProperty

Identifica a propriedade anexada AnimatedIcon.State XAML.

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

Propriedades Anexadas

State

Propriedade que o desenvolvedor define em AnimatedIcon.

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

Métodos

GetState(DependencyObject)

Recupera o valor da propriedade anexada AnimatedIcon.State para o DependencyObject especificado.

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

SetState(DependencyObject, String)

Especifica o valor da propriedade anexada AnimatedIcon.State para o DependencyObject especificado.

Esta documentação se aplica ao WinUI 2 para UWP (para WinUI no SDK do Aplicativo Windows, consulte os namespaces SDK do Aplicativo Windows).

Aplica-se a

Confira também