首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FEATURE_ACTIVITY_TRANSITIONS对FEATURE_CONTENT_TRANSITIONS

FEATURE_ACTIVITY_TRANSITIONS对FEATURE_CONTENT_TRANSITIONS
EN

Stack Overflow用户
提问于 2015-03-10 23:18:17
回答 1查看 7.7K关注 0票数 45

我在理解这两个Window标志之间的区别时遇到了一些困难,并且不能100%确定何时需要使用它们,以及为什么。

Window.FEATURE_ACTIVITY_TRANSITIONS的文档说:

允许活动通过发送或接收用makeSceneTransitionAnimation(Activity, Pair[])makeSceneTransitionAnimation(Activity, View, String)创建的makeSceneTransitionAnimation(Activity, Pair[])包来运行活动转换。

Window.FEATURE_CONTENT_TRANSITIONS的医生说:

用于请求窗口内容更改的标志应该使用TransitionManager动画化。 TransitionManager是使用setTransitionManager(TransitionManager)设置的。如果没有设置,则将使用默认TransitionManager

文档指出,以下Window方法要求启用FEATURE_ACTIVITY_TRANSITIONS标志,但对于是否需要启用FEATURE_CONTENT_TRANSITIONS也只字不提(注意,根据source codeFEATURE_ACTIVITY_TRANSITIONStrueFEATURE_CONTENT_TRANSITIONS是以材料为主题的应用程序,默认情况下是false ):

  • 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()

换句话说,基于这些信息,FEATURE_ACTIVITY_TRANSITIONS似乎是应用程序为了使用Lollipop的新活动转换API而需要启用的特性标志。然而,让我感到困惑的是,来自安卓开发者网站的this article声明,要实现定制的活动转换,需要启用FEATURE_CONTENT_TRANSITIONS

以下是我的问题:

  1. 这两面旗帜有什么区别?在这种情况下,“活动过渡”和“内容过渡”之间有什么区别?
  2. 为什么默认情况下启用FEATURE_ACTIVITY_TRANSITIONS而禁用FEATURE_CONTENT_TRANSITIONS?何时启用FEATURE_CONTENT_TRANSITIONS标志是实际必需的?
  3. 禁用FEATURE_ACTIVITY_TRANSITIONS和启用FEATURE_CONTENT_TRANSITIONS是否有意义?还是FEATURE_CONTENT_TRANSITIONS也需要启用FEATURE_ACTIVITY_TRANSITIONS

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-11 14:55:14

我很高兴我有机会回答这些问题,因为文档不够清晰。

在早期,有一个标志FEATURE_CONTENT_TRANSITIONS处理这两个特性.当物质应用程序在启用时出现意外行为时,我们将其拆分。因此,一些较旧的文档可能仍然说,当FEATURE_CONTENT_TRANSITIONS的意思是FEATURE_ACTIVITY_TRANSITIONS时,您必须启用它来获得活动转换。

  1. 这两面旗帜有什么区别?在这种情况下,“活动过渡”和“内容过渡”之间有什么区别?

此上下文中的活动转换意味着您使用从startActivity创建的包调用ActivityOptions.makeSceneTransitionAnimation,或者您的活动是从该包开始的。Activity会修改您的布局(例如元素中的渐变,移动共享元素),因此如果您的活动不喜欢这样做,您应该禁用FEATURE_ACTIVITY_TRANSITIONS

当您调用TransitionManager (第一次以外)时,内容转换使用setContentView。通常,您会看到交叉淡出,但是如果您的活动的内容有共同点,比如共享if或使用transitionName,那么您将在这些视图之间得到ChangeBounds行为。您可以通过使用XML或代码自定义与窗口关联的TransitionManager来更改转换的详细信息。

  1. 为什么默认情况下启用FEATURE_ACTIVITY_TRANSITIONS而禁用FEATURE_CONTENT_TRANSITIONS?何时启用FEATURE_CONTENT_TRANSITIONS标志是实际必需的?

当您的内容发生更改时,FEATURE_CONTENT_TRANSITIONS使用TransitionManager。默认情况下,这是一个交叉淡出,这对一些应用程序来说非常糟糕。另一方面,默认情况下,FEATURE_ACTIVITY_TRANSITIONS不会对大多数应用程序做任何事情。你必须选择以这种方式开始一项活动,所以打开它是安全的。

  1. 禁用FEATURE_ACTIVITY_TRANSITIONS和启用FEATURE_CONTENT_TRANSITIONS是否有意义?还是FEATURE_CONTENT_TRANSITIONS也需要启用FEATURE_ACTIVITY_TRANSITIONS

是的,但这不太可能。如果您的应用程序喜欢FEATURE_CONTENT_TRANSITIONS,那么它应该可以很好地与FEATURE_ACTIVITY_TRANSITIONS一起工作。如果您希望显式地限制用户使用共享元素调用您的活动,或者您不喜欢标准的enter转换效果,您可以禁用它以防止在其他应用程序调用您的活动时产生的效果。

票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28975840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档