Skip to content

Hero ​

Animation

Engine\Native\Hero est l'équivalent natif d'Engine\Hero : la même idée de $tag partagé, mais sans DOM/CSS à qui déléguer la transition. La boîte englobante de l'enfant (le Size retourné par layout(), à la position x/y passée à paint()) est enregistrée comme heroRegion sous $tag. Il n'y a pas de Navigator dans ce moteur : ce qui déclenche le vol n'est pas un push/pop d'écran, mais simplement le fait que le même tag apparaisse à un rect différent d'un rendu au suivant — NativeCanvasView.kt détecte cet écart et fait voler le sous-arbre taggé de son ancien rect vers le nouveau (une vraie transition FLIP via une Matrix, voir drawHeroTransition()) plutôt que de simplement le faire réapparaître en fondu à sa nouvelle place.

Exemple ​

php
<?php

use Engine\Native\Hero;
use Engine\Native\ImageCircle;
use Engine\Native\Curve;

$avatar = new Hero(
    child: new ImageCircle('https://cdn.example.com/avatar.jpg', diameter: 56.0),
    tag: 'user-avatar-42',
    curve: Curve::EASE_OUT,
);

Si cet avatar apparaît petit dans une liste puis, au rendu suivant du même écran, en grand dans un en-tête de profil — toujours sous le tag user-avatar-42 — le client anime son déplacement/redimensionnement au lieu de le faire réapparaître brutalement à sa nouvelle position.

Constructeur ​

ParamètreTypeDéfautDescription
childWidget—Le sous-arbre dont le rect est suivi d'un rendu à l'autre.
tagstring—Identifiant partagé entre les deux occurrences du même élément visuel.
curve?CurvenullCourbe d'interpolation appliquée au vol.

À savoir. Toutes les transitions Hero d'une même passe tournent sur un seul ValueAnimator linéaire partagé côté Kotlin — une courbe par tag est obtenue en reformant cette même progression 0..1 au moment du dessin, pas en lançant un animateur séparé par tag.

Voir aussi ​

PhpNitro est un produit FINANFA TECH — Publié sous licence MIT.