Configurer une transition

Utilisez une transition pour définir les changements entre les panneaux. Vous pouvez définir une transition pour décrire comment et quand passer d'une variante de panneau à une autre. Vous pouvez définir une liste de transitions pour chaque panneau.

Utilisez la balise XML <Transitions> comme conteneur pour une ou plusieurs définitions <Transition> dans la configuration d'un seul <TaskPanel> ou <DecorPanel>. Vous pouvez utiliser ce tag pour définir un ensemble de règles d'animation qui régissent quand et comment un panneau doit passer d'une variante visuelle distincte à une autre.

Attributs XML

La balise <Transitions> peut définir des valeurs par défaut pour les éléments enfants <Transition> suivants :

Attribut État Description
<defaultDuration> Facultatif

Spécifie une durée par défaut en millisecondes à appliquer à tous les enfants.

Éléments <Transition> qui ne définissent pas explicitement un attribut de durée.

La constante DEFAULT_DURATION du système, généralement de 300 millisecondes, est utilisée lorsque cet attribut n'est pas spécifié.

defaultInterpolator Facultatif

Fait référence à un ID de ressource XML d'interpolateur Android. Par exemple, @android:anim/accelerate_decelerate_interpolator. L'interpolateur est utilisé par défaut pour tous les éléments <Transition> enfants qui ne définissent pas explicitement d'attribut d'interpolateur.

Si aucun interpolateur par défaut n'est spécifié, le système utilise généralement un AccelerateDecelerateInterpolator par défaut.

Éléments enfants XML

L'élément enfant de <Transitions> est <Transition>, l'élément de base utilisé pour définir un chemin d'animation spécifique entre les variantes PanelState. Plusieurs éléments <Transition> peuvent être imbriqués dans un même bloc <Transitions>.

Exemple de code

Dans cet exemple, fromVariant est facultatif. Si elle n'est pas définie, la variante actuelle est utilisée. Si fromVariant est défini, la transition n'est utilisée que lorsque tous les paramètres correspondent. Les paramètres sont spécifiés dans l'événement et fromVariant.

<Transitions defaultDuration="400"
         defaultInterpolator="@android:anim/linear_interpolator">
  <Transition fromVariant="closed_app"
              toVariant="opened_app">
    <Event id="app_opened" panel="application_panel" />
  </Transition>
</Transitions>

Transition

Une transition décrit comment animer un changement d'état visuel entre deux variantes d'un panneau. Une transition décrit le chemin d'une variante à une autre. Pour ce faire, la transition spécifie des détails tels que l'animation à appliquer et l'événement nécessaire pour déclencher l'animation.

Pour un panneau, les transitions peuvent définir des animations pour des propriétés telles que les limites, la visibilité et l'alpha. Si aucun animateur personnalisé n'est spécifié, un animateur par défaut est utilisé.

Attributs XML

La balise <Transition> utilise plusieurs attributs pour définir les caractéristiques de l'animation et les conditions dans lesquelles elle doit se produire.

Éléments enfants XML

<Event> définit les propriétés de l'événement qui peuvent déclencher la transition.

Identifiant unique du panneau associé à cet événement.
Attribut État Description
<id> Obligatoire Identifiant unique de l'événement pour activer le déclencheur.
<panelId> Facultatif Identifiant unique du panneau associé à l'événement.
componentName Facultatif Nom du composant associé à cet événement.
packageName Facultatif Nom du package associé à l'événement.

Exemple de code

<Transitions defaultDuration="400"
        defaultInterpolator="@android:anim/accelerate_interpolator">
  <!-- A transition from 'closed_app' to 'opened_app' variant, triggered by 'open_app_event' -->
  <Transition fromVariant="closed_app"
              toVariant="opened_app">
    <Event id="app_opened" panel="application_panel" />
  <Transition>

  <!-- A transition from 'opened_app' to 'closed_app' variant, using a custom animator -->
  <Transition fromVariant="opened_app"
              toVariant="closed_app"
              animator="@animator/close_app">
    <Event id="_System_PanelEmptyEvent"
           panelId="application_panel" />
  <Transition>
</Transitions>