activity - transition android github
FEATURE_ACTIVITY_TRANSITIONS vs. FEATURE_CONTENT_TRANSITIONS (1)
Me alegro de tener la oportunidad de responder estas preguntas ya que la documentación no está tan clara.
Desde el principio, había un indicador FEATURE_CONTENT_TRANSITIONS
que manejaba ambas características. Los dividimos cuando las aplicaciones Material obtuvieron un comportamiento inesperado cuando se habilitó. Por lo tanto, es posible que algunos documentos anteriores sigan indicando que debe habilitar FEATURE_CONTENT_TRANSITIONS
para obtener transiciones de actividad cuando signifiquen FEATURE_ACTIVITY_TRANSITIONS
.
- ¿Cuál es la diferencia entre estas dos banderas? ¿Cuál es la diferencia entre una "transición de actividad" y una "transición de contenido" en este contexto?
Una transición de actividad en este contexto significa que usted llama a startActivity
con un paquete creado desde ActivityOptions.makeSceneTransitionAnimation
o, su actividad se inició con ese paquete. Las Transiciones de actividad modifican su diseño (por ejemplo, desvanecimiento de elementos, movimiento de elementos compartidos), por lo que si su actividad no le gusta, debe desactivar FEATURE_ACTIVITY_TRANSITIONS
.
Las transiciones de contenido usan un TransitionManager
cuando llamas a setContentView
(que no sea la primera vez). Por lo general, obtendrás un fundido cruzado, pero si el contenido de tu actividad tiene cosas en común, como compartir identificadores o usar transitionName
, obtendrás el comportamiento ChangeBounds
entre esas vistas. Puede cambiar los detalles de sus transiciones personalizando el TransitionManager
asociado a su Ventana, ya sea mediante XML o código.
- ¿Por qué está habilitado
FEATURE_ACTIVITY_TRANSITIONS
yFEATURE_CONTENT_TRANSITIONS
deshabilitado de forma predeterminada? ¿Cuándo se requiere realmente el indicadorFEATURE_CONTENT_TRANSITIONS
?
FEATURE_CONTENT_TRANSITIONS
usa un TransitionManager cuando su contenido cambia. Por defecto, este es un cross-fade y eso fue muy malo para algunas aplicaciones. Por otro lado, FEATURE_ACTIVITY_TRANSITIONS
no hace nada en la mayoría de las aplicaciones de forma predeterminada. Tienes que optar por comenzar una actividad de esa manera, por lo que es seguro encenderlo.
- ¿Tendría alguna vez sentido inhabilitar
FEATURE_ACTIVITY_TRANSITIONS
y habilitarFEATURE_CONTENT_TRANSITIONS
? ¿O bien,FEATURE_CONTENT_TRANSITIONS
requiereFEATURE_ACTIVITY_TRANSITIONS
para habilitarse?
Sí, pero es poco probable. Si su aplicación le gusta FEATURE_CONTENT_TRANSITIONS
, debería funcionar bien con FEATURE_ACTIVITY_TRANSITIONS
. Si desea limitar explícitamente que las personas llamen a su actividad con elementos compartidos o si no le gusta el efecto de transición de entrada estándar, puede deshabilitarlo para evitar el efecto cuando otra aplicación llame al suyo.
Tengo problemas para entender la diferencia entre estos dos indicadores de Window
y no estoy 100% seguro cuando cada uno necesita ser usado y por qué.
Los documentos para Window.FEATURE_ACTIVITY_TRANSITIONS
dicen:
Permite que las actividades ejecuten Transiciones de actividad ya sea enviando o recibiendo el paquete ActivityOptions creado con
makeSceneTransitionAnimation(Activity, Pair[])
omakeSceneTransitionAnimation(Activity, View, String)
.
Y los documentos de Window.FEATURE_CONTENT_TRANSITIONS
dicen:
Marcar para solicitar que los cambios en el contenido de la ventana se deben animar usando un
TransitionManager
.
TransitionManager
se establece usandosetTransitionManager(TransitionManager)
. Si no se establece ninguno, se usará unTransitionManager
predeterminado.
La documentación indica que los siguientes métodos de Window
requieren que se FEATURE_ACTIVITY_TRANSITIONS
indicador FEATURE_ACTIVITY_TRANSITIONS
, pero no dice nada acerca de si el FEATURE_CONTENT_TRANSITIONS
necesita habilitarse también (tenga en cuenta que de acuerdo con el código fuente , FEATURE_ACTIVITY_TRANSITIONS
es true
y FEATURE_CONTENT_TRANSITIONS
es false
para el material- aplicaciones temáticas por defecto):
-
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 otras palabras, parece que en función de esta información, FEATURE_ACTIVITY_TRANSITIONS
es el indicador de función que las aplicaciones deberán habilitar para utilizar las nuevas API de transición de actividades de Lollipop. Lo que me confunde, sin embargo, es que este artículo del sitio de Desarrolladores de Android indica que es necesario habilitar FEATURE_CONTENT_TRANSITIONS
para implementar transiciones de actividades personalizadas.
Asi que aqui están mis preguntas:
- ¿Cuál es la diferencia entre estas dos banderas? ¿Cuál es la diferencia entre una "transición de actividad" y una "transición de contenido" en este contexto?
- ¿Por qué está habilitado
FEATURE_ACTIVITY_TRANSITIONS
yFEATURE_CONTENT_TRANSITIONS
deshabilitado de forma predeterminada? ¿Cuándo se requiere realmente el indicadorFEATURE_CONTENT_TRANSITIONS
? - ¿Tendría alguna vez sentido inhabilitar
FEATURE_ACTIVITY_TRANSITIONS
y habilitarFEATURE_CONTENT_TRANSITIONS
? ¿O bien,FEATURE_CONTENT_TRANSITIONS
requiereFEATURE_ACTIVITY_TRANSITIONS
para habilitarse?
¡Gracias!