Configurar um painel

Um painel descreve as propriedades da área que ocupa e funciona como um contêiner de app. Você usa configurações XML para definir painéis, que oferecem uma abordagem flexível e sem código para personalizar interfaces. Para gerenciar instâncias e estados, o sistema rastreia os painéis definidos.

Lista de painéis

A interface do sistema carrega as definições dos painéis de um recurso de matriz chamado window_states. Essa matriz de recursos aponta para os arquivos XML em que as configurações de painel individuais são definidas. Essa abordagem centralizada significa que os painéis gerenciados pela interface escalonável são carregados conforme o esperado e ficam prontos para uso pelo sistema.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <array name="window_states">
       <item>@xml/app_panel</item>
       <item>@xml/back_panel</item>
       ...
   </array>
</resources>

Definição do painel

Cada painel na estrutura da interface escalonável é definido com uma tag XML chamada <TaskPanel> ou <DecorPanel>. <TaskPanel> descreve as propriedades de um contêiner de app, enquanto <DecorPanel> descreve as propriedades de um contêiner de visualização. A interface do sistema carrega essas definições de painel e rastreia os painéis até que outra configuração seja carregada. Por exemplo, por uma mudança de configuração devido à rotação ou a uma solicitação explícita do sistema. Os <TaskPanel> e <DecorPanel> servem como componentes básicos para criar uma experiência personalizada usando componentes de interface configuráveis.

Atributos XML

A tag <TaskPanel> pode conter esses atributos que você pode usar para definir estados e transições.

Atributo Status Descrição
id Obrigatório Especifica um identificador exclusivo para o painel. Esse atributo é usado para recuperar o painel do PanelPool e gerenciar o estado dele no sistema.
role Obrigatório Define a finalidade ou função do painel no sistema. O valor pode se referir a um recurso de string, uma matriz de strings de nomes de componentes ou a um ID de layout. Por exemplo, ele pode definir atividades persistentes que sempre devem ser exibidas no painel ou um layout a ser inflado.
defaultVariant Opcional Especifica o ID da variante que o painel deve adotar inicialmente quando for carregado. Se não for especificado, o sistema poderá usar a primeira variante definida como padrão.
displayId Opcional Especifica o ID da tela em que o painel deve aparecer.
defaultLayer Opcional Pode especificar uma ordem Z padrão para as variantes do painel se elas não definirem explicitamente uma camada.
controller Opcional,
sujeito a mudanças

Referencia um recurso (geralmente um ID XML) que define um controlador específico do painel, que permite o armazenamento e a transmissão de valores de configuração para controladores de painel personalizados.

Esses controladores precisam implementar a com.android.car.scalableui.panel.TaskPanelController interface. Um caso de uso comum desses controladores é definir alocações de tarefas de tempo de execução flexíveis no painel.

Elementos filhos XML

As tags <TaskPanel> e <DecorPanel> podem incluir esses elementos filhos para definir características e comportamentos padrão.

Atributo Descrição
<Variant>

A tag aninhada descreve uma configuração visual específica para o painel a qualquer momento. Um painel pode ter várias variantes, cada uma identificada por um ID exclusivo.

Cada variante define propriedades como limites, visibilidade, camada, alfa, raio do canto e inserções para essa configuração específica. As variantes também podem herdar propriedades de uma principal variante.

<KeyFrameVariant> A extensão de <Variant> permite a interpolação de propriedades visuais entre diferentes variantes com base em um valor de fração contínuo (0 a 1) e é usada para transições suaves e dinâmicas, como durante uma operação de arrastar, quando o estado do painel depende de uma entrada contínua, como um valor de arrastar.
<Transitions>

A tag aninhada contém uma coleção de <Transition> definições, que descrevem como a interface precisa animar entre diferentes variantes.

Cada <Transition> define as variantes de e para, o evento que a aciona e, opcionalmente, pode especificar um animador personalizado a ser usado para a animação, bem como uma duração e um interpolador.

A tag <TaskPanel> também pode incluir esses elementos filhos especiais para definir comportamentos específicos das tarefas.

Atributo Descrição
<Restart> Tag aninhada para descrever uma política de reinicialização a ser aplicada quando um TaskPanel ficar vazio. Essa tag oferece suporte aos atributos policy, que pode ser definido como DEFAULT ou LAST, e maxRetry, que especifica quantas vezes a reinicialização será tentada antes do tempo limite.
<TaskBehavior> Tag aninhada para descrever o comportamento de inicializações de tarefas nesse painel. Essa tag oferece suporte ao atributo newTaskLaunchPolicy, que configura o comportamento de novas inicializações de tarefas desse TaskPanel. Os valores de configuração válidos para essa política são DEFAULT, REMAIN_IN_SOURCE, ou REPARENT_TO_SOURCE.

Exemplo de código

<TaskPanel id="@+id/panelId"
           role="@array/roleValue"
           defaultVariant="@id/closed"
           displayId="0" >

 <Variant id="@+id/base">
        <Bounds left="0" top="0" width="100%" height="100%"/>
 </Variant>

<Variant id="@+id/opened" parent="@id/base">
    <Visibility isVisible="true"/>
</Variant>
<Variant id="@+id/closed"  parent="@id/base">
    <Visibility isVisible="false"/>
</Variant>

<Transitions>
    <Transition fromVariant="@id/closed"
                toVariant="@id/opened"
                onEvent="open_event"/>
        <Event id="_System_TaskOpenEvent" panelId="@id/panelId" />
    </Transition>
</Transitions>
</TaskPanel>