Un panel describe las propiedades del área que ocupa y actúa como un contenedor de la app. Usas configuraciones XML para definir paneles, que proporcionan un enfoque flexible y sin código para personalizar las IU. Para administrar instancias y estados, el sistema hace un seguimiento de los paneles definidos.
Lista de paneles
La IU del sistema carga las definiciones de sus paneles desde un recurso de array llamado window_states
. Este array de recursos apunta a los archivos XML en los que se definen las configuraciones de paneles individuales. Este enfoque centralizado significa que los paneles administrados por la IU escalable se cargan según lo previsto y están listos para que el sistema los use.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="window_states">
<item>@xml/app_panel</item>
<item>@xml/back_panel</item>
...
</array>
</resources>
Definición del panel
Cada panel del framework de IU adaptable se define con una etiqueta XML llamada <TaskPanel>
, que describe las propiedades de un contenedor de la app. La IU del sistema carga estas definiciones de paneles y realiza un seguimiento de los paneles hasta que se carga otra configuración.
Por ejemplo, por un cambio de configuración debido a la rotación o a una solicitud explícita del sistema. El <TaskPanel>
sirve como componente fundamental para crear una experiencia personalizada a través de componentes de IU configurables.
Atributos XML
La etiqueta <TaskPanel>
puede contener estos atributos que puedes usar para definir estados y transiciones.
Atributo | Estado | Descripción |
---|---|---|
id |
Obligatorio | Especifica un identificador único para el panel. Este atributo se usa para recuperar el panel de PanelPool y administrar su estado dentro del sistema. |
role |
Obligatorio | Define el propósito o la función del panel en el sistema. El valor puede hacer referencia a un recurso de cadena, un array de cadenas de nombres de componentes o un ID de diseño. Por ejemplo, puede definir actividades persistentes que siempre se deben mostrar en el panel o un diseño que se debe inflar. |
defaultVariant |
Opcional | Especifica el ID de la variante que el panel debe adoptar inicialmente cuando se carga. Si no se especifica, el sistema puede usar la primera variante definida como la predeterminada. |
displayId |
Opcional | Especifica el ID de la pantalla en la que se debe mostrar el panel. |
defaultLayer |
Opcional | Puede especificar un orden Z predeterminado para las variantes del panel si estas no definen explícitamente una capa. |
controller |
Opcional, sujeto a cambios |
Hace referencia a un recurso (por lo general, un ID de XML) que define un controlador específico del panel, lo que permite almacenar y pasar valores de configuración a los controladores de panel personalizados. Estos controladores deben implementar la interfaz |
Elementos secundarios XML
La etiqueta <TaskPanel>
puede incluir estos atributos para definir características y comportamientos predeterminados.
Atributo | Descripción |
---|---|
<Variant> |
La etiqueta anidada describe una configuración visual específica para el panel en cualquier momento dado. Un panel puede tener varias variantes, cada una identificada por un ID único. Cada variante define propiedades como límites, visibilidad, capa, alfa, radio de esquina y ajustes para esa configuración en particular. Las variantes también pueden heredar propiedades de una variante principal. |
<KeyFrameVariant> |
La extensión de <Variant> permite la interpolación de propiedades visuales entre diferentes variantes en función de un valor de fracción continuo (de 0 a 1) y se usa para transiciones fluidas y dinámicas, como durante una operación de arrastre, cuando el estado del panel depende de una entrada continua, como una cantidad de arrastre. |
<Transitions> |
La etiqueta anidada contiene una colección de definiciones de Cada |
Código de muestra
<Panel 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>
</Panel>