Uma variante define um estado visual específico para um painel, permitindo que um único painel tenha várias representações visuais distintas, como um estado aberto ou fechado. Use XML para configurar a variante. Use
uma subtag em um elemento <Panel>.
Cada tag <Variant> tem um atributo id obrigatório para identificá-la de forma exclusiva.
A tag também pode se referir a uma variante principal para herdar propriedades. Esse mecanismo de herança permite a definição eficiente de propriedades comuns em várias variantes.
Atributos XML
Para definir estados e transições, use esses atributos com a <TaskPanel> ou
<DecorPanel> tag.
| Atributo | Status | Descrição |
|---|---|---|
id |
Obrigatório | Identificador exclusivo da variante. Esse ID é usado para se referir à
variante em transições ou como defaultVariant para um painel.
|
parent |
Opcional | Especifica o ID de outra variante da qual a variante atual precisa herdar propriedades. Se uma propriedade não for definida explicitamente na variante atual, ela vai retornar ao valor definido na variante principal. |
Elementos filhos XML
Use esses elementos opcionais para especificar as características visuais do painel quando ele estiver no estado dessa variante.
| Elemento filho | Descrição |
|---|---|
<Visibility> |
Especifica se o painel está visível ou oculto e contém um
isVisible atributo (booleano). |
<Alpha> |
Especifica o nível de transparência do painel; contém um
alpha atributo (float, de 0,0 a 1,0). |
<Layer> |
Define a ordem Z do painel em relação a outros painéis; contém um
layer atributo (inteiro). Valores mais altos são desenhados na parte de cima. |
<Focus> |
Especifica se o painel pode receber o foco durante uma transição; contém
um onTransition atributo (booleano).
|
<Bounds> |
Define a área retangular (posição e tamanho) do painel na tela. Essa área é controlada por atributos como left, top, bottom, width e height.
Ao usar porcentagens, é possível empregar atributos de deslocamento para aplicar ajustes fixos aos limites baseados em porcentagem: Por exemplo, para designar que um painel ocupe 100% da altura da tela, excluindo uma barra de navegação de altura fixa na parte de baixo, defina a altura como 100% e o |
<SafeBounds> |
Especifica uma área segura dentro dos limites do painel que não é sobreposta
por cortes ou recuos de exibição, para destacar a compatibilidade com apps desenhados
nela. Os atributos são semelhantes a <Bounds>.
|
<Corner> |
Define o raio dos cantos do painel, permitindo cantos arredondados cantos e contém um atributo de raio (inteiro). Um canto nítido é o padrão e não precisa ser definido. |
<Insets> |
Especifica os recuos (padding) do painel. Ele contém atributos left, top, right e bottom. Esses recuos são informados aos apps iniciados no painel.
|
<Background> |
Apresenta um painel de decoração de plano de fundo opcional para evitar efeitos transparentes quando os apps são trocados. Ele define propriedades como cor e alfa para essa camada de decoração. As propriedades da camada de decoração, como limites e camada, são definidas como as propriedades da variante quando ainda não estão definidas. |
Exemplo de código
<Variant id="@id/opened">
<Visibility isVisible="true"/>
<Bounds left="0dp"
top="0dp"
right="100%"
bottom="100%"
bottomOffset="100dp"/>
<Alpha value="1.0"/>
<Layer value="10"/>
<Focus onTransition="true"/>
<Corner radius="24dp"/>
<Insets left="16dp" top="0dp" right="16dp" bottom="48dp"/>
<Background color="@color/app_background" alpha="0.9"/>
</Variant>
Interpolar propriedades visuais
Use KeyFrameVariant para interpolar propriedades visuais. Essa extensão especializada de variant é baseada em um valor fracionário contínuo (de 0 a 1) que permite transições suaves e dinâmicas impulsionadas por entrada contínua, como uma operação de arrastar quando o estado do painel muda dinamicamente com a quantidade de arrasto.
Atributos XML
KeyFrameVariant não tem atributos. A tag <KeyFrameVariant> contém
as informações necessárias para definir um KeyFrameVariant.
Elementos filhos XML
KeyFrameVariant contém uma ou mais tags filhas <KeyFrame>. Cada
<KeyFrame> tem um atributo framePosition (0 a 100) e se refere a um atributo de variante (o ID de outra variante). Esses keyframes definem o estado do painel em pontos específicos em uma transição contínua.
Exemplo de código
<KeyFrameVariant id="@id/panel_resizing">
<KeyFrame framePosition="0" variant="@id/minimized"/>
<KeyFrame framePosition="75" variant="@id/opened"/>
<KeyFrame framePosition="100" variant="@id/expanded"/>
</KeyFrameVariant>