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 identificação 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 tag <TaskPanel>
ou
<DecorPanel>
.
Atributo | Status | Descrição |
---|---|---|
id |
Obrigatório | Identificador exclusivo da variante. Esse ID é usado para se referir à variante em transições ou como o defaultVariant de um painel.
|
parent |
Opcional | Especifica o ID de outra variante de que a variante atual deve herdar propriedades. Se uma propriedade não for definida explicitamente na variante atual, ela vai usar o valor definido na variante principal. |
Elementos filhos XML
Use estes elementos opcionais para especificar as características visuais do painel quando ele está no estado desta variante.
Elemento filho | Descrição |
---|---|
<Visibility> |
Especifica se o painel está visível ou oculto e contém um atributo
isVisible (booleano). |
<Alpha> |
Especifica o nível de transparência do painel e contém um atributo alpha (float, 0,0 a 1,0). |
<Layer> |
Define a ordem Z do painel em relação a outros painéis. Contém um atributo layer (número inteiro). Valores mais altos são mostrados na parte de cima. |
<Focus> |
Especifica se o painel pode ganhar foco durante uma transição. Contém
um atributo onTransition (booleano).
|
<Bounds> |
Define a área retangular (posição e tamanho) do painel na tela. Essa área é controlada por atributos como esquerda, superior, inferior, largura e altura.
Ao usar porcentagens, é possível empregar atributos de ajuste 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 encartes da tela, para enfatizar a compatibilidade com apps renderizados
dentro dela. Os atributos são semelhantes a <Bounds> .
|
<Corner> |
Define o raio dos cantos do painel, permitindo cantos arredondados e contém um atributo de raio (número inteiro). Um canto agudo é o padrão e não precisa ser definido. |
<Insets> |
Especifica os encartes (padding) do painel. Ele contém atributos à esquerda, acima, à direita e abaixo. Esses encartes são informados aos apps iniciados no painel.
|
<Background> |
Apresenta um painel de decoração de plano de fundo opcional para evitar efeitos de transparência ao trocar de apps. 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
se baseia 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 de uma transição contínua.
Código de exemplo
<KeyFrameVariant id="@id/panel_resizing">
<KeyFrame framePosition="0" variant="@id/minimized"/>
<KeyFrame framePosition="75" variant="@id/opened"/>
<KeyFrame framePosition="100" variant="@id/expanded"/>
</KeyFrameVariant>