J'ai du mal à comprendre la différence entre ces deux indicateurs Window
et je ne suis pas certain à 100% quand chacun doit être utilisé et pourquoi.
Les documents pour Window.FEATURE_ACTIVITY_TRANSITIONS
disent:
Permet à Activities d'exécuter des transitions d'activité via l'envoi ou la réception d'un ensemble ActivityOptions créé avec
makeSceneTransitionAnimation(Activity, Pair[])
oumakeSceneTransitionAnimation(Activity, View, String)
.
Et les documents pour Window.FEATURE_CONTENT_TRANSITIONS
disent:
Indicateur pour demander que les modifications du contenu de la fenêtre soient animées à l'aide d'un
TransitionManager
.
TransitionManager
est défini à l'aide desetTransitionManager(TransitionManager)
. Si aucun n'est défini, unTransitionManager
par défaut sera utilisé.
La documentation indique que les méthodes Window
suivantes nécessitent l'activation du drapeau FEATURE_ACTIVITY_TRANSITIONS
, Mais ne disent pas si le FEATURE_CONTENT_TRANSITIONS
Doit être activé ou non. également activé (notez que selon le code source , FEATURE_ACTIVITY_TRANSITIONS
est true
et FEATURE_CONTENT_TRANSITIONS
est false
pour le thème matériel applications par défaut):
get{Enter,Exit,Return,Reenter}Transition()
set{Enter,Exit,Return,Reenter}Transition()
getSharedElement{Enter,Exit,Return,Reenter}Transition()
setSharedElement{Enter,Exit,Return,Reenter}Transition()
getTransitionBackgroundFadeDuration()
setTransitionBackgroundFadeDuration()
En d'autres termes, il semble que sur la base de ces informations FEATURE_ACTIVITY_TRANSITIONS
Est l'indicateur de fonctionnalité que les applications devront activer pour utiliser les nouvelles API de transition d'activité de Lollipop. Ce qui m'embrouille cependant, c'est que cet article du site Android Developers site indique que l'activation de FEATURE_CONTENT_TRANSITIONS
Est nécessaire pour implémenter des transitions d'activité personnalisées .
Donc, voici mes questions:
FEATURE_ACTIVITY_TRANSITIONS
Est activé et FEATURE_CONTENT_TRANSITIONS
Désactivé par défaut? Quand l'activation de l'indicateur FEATURE_CONTENT_TRANSITIONS
Est-elle réellement requise?FEATURE_ACTIVITY_TRANSITIONS
Et d'activer FEATURE_CONTENT_TRANSITIONS
? Ou FEATURE_CONTENT_TRANSITIONS
Nécessite-t-il que FEATURE_ACTIVITY_TRANSITIONS
Soit également activé?Merci!
Je suis heureux d'avoir l'occasion de répondre à ces questions car la documentation n'est pas claire.
Au début, il y avait un drapeau FEATURE_CONTENT_TRANSITIONS
qui a géré les deux fonctionnalités. Nous les avons séparés lorsque les applications Material ont eu un comportement inattendu lors de son activation. Ainsi, une documentation plus ancienne peut toujours dire que vous devez activer FEATURE_CONTENT_TRANSITIONS
pour obtenir des transitions d'activité quand elles signifient FEATURE_ACTIVITY_TRANSITIONS
.
- Quelle est la différence entre ces deux drapeaux? Quelle est la différence entre une "transition d'activité" et une "transition de contenu" dans ce contexte?
Une transition d'activité dans ce contexte signifie que vous appelez startActivity
avec un bundle créé à partir de ActivityOptions.makeSceneTransitionAnimation
ou, votre activité a démarré avec cet ensemble. Les transitions d'activité modifient votre mise en page (par exemple, fondu d'éléments, déplacement d'éléments partagés), donc si votre activité n'aime pas cela, vous devez désactiver FEATURE_ACTIVITY_TRANSITIONS
.
Les transitions de contenu utilisent un TransitionManager
lorsque vous appelez setContentView
(autre que la première fois). En règle générale, vous obtiendrez un fondu enchaîné, mais si le contenu de votre activité a des choses en commun, telles que le partage d'ID ou l'utilisation de transitionName
, vous obtiendrez un comportement de ChangeBounds
entre ces vues. Vous pouvez modifier les détails de vos transitions en personnalisant le TransitionManager
associé à votre fenêtre à l'aide de XML ou de code.
- Pourquoi est-ce
FEATURE_ACTIVITY_TRANSITIONS
activé etFEATURE_CONTENT_TRANSITIONS
désactivé par défaut? Quand active leFEATURE_CONTENT_TRANSITIONS
drapeau réellement requis?
FEATURE_CONTENT_TRANSITIONS
utilise un TransitionManager lorsque votre contenu change. Par défaut, il s'agit d'un fondu enchaîné et c'était très mauvais pour certaines applications. D'autre part, FEATURE_ACTIVITY_TRANSITIONS
ne fait rien par défaut pour la plupart des applications. Vous devez choisir de démarrer une activité de cette façon, il est donc sûr de l'activer.
- Serait-il un jour logique de désactiver
FEATURE_ACTIVITY_TRANSITIONS
et activerFEATURE_CONTENT_TRANSITIONS
? Ou est-ce queFEATURE_CONTENT_TRANSITIONS
nécessiteFEATURE_ACTIVITY_TRANSITIONS
à activer également?
Oui, mais c'est peu probable. Si votre application aime FEATURE_CONTENT_TRANSITIONS
, cela devrait bien fonctionner avec FEATURE_ACTIVITY_TRANSITIONS
. Si vous souhaitez empêcher explicitement les personnes d'appeler votre activité avec des éléments partagés ou si vous n'aimez pas l'effet de transition d'entrée standard, vous pouvez le désactiver pour empêcher l'effet lorsqu'une autre application appelle la vôtre.