我无法理解这两者之间的区别Window http://developer.android.com/reference/android/view/Window.html标志,但我不能 100% 确定何时需要使用每一个以及为什么。
的文档Window.FEATURE_ACTIVITY_TRANSITIONS http://developer.android.com/reference/android/view/Window.html#FEATURE_ACTIVITY_TRANSITIONS say:
使活动能够运行活动转换
通过发送或接收使用以下命令创建的 ActivityOptions 捆绑包makeSceneTransitionAnimation(Activity, Pair[])
or makeSceneTransitionAnimation(Activity, View, String)
.
以及文档Window.FEATURE_CONTENT_TRANSITIONS http://developer.android.com/reference/android/view/Window.html#FEATURE_CONTENT_TRANSITIONS say:
请求窗口内容更改的标志
使用 a 进行动画处理TransitionManager
.
The TransitionManager
设置使用setTransitionManager(TransitionManager)
。
如果没有设置,则默认TransitionManager
将会被使用。
该文档指出以下内容Window http://developer.android.com/reference/android/view/Window.html方法需要FEATURE_ACTIVITY_TRANSITIONS
标志要启用,但没有说明是否FEATURE_CONTENT_TRANSITIONS
还需要启用(请注意,根据源代码 https://github.com/android/platform_frameworks_base/blob/lollipop-release/core/res/res/values/themes_material.xml#L162-L163, FEATURE_ACTIVITY_TRANSITIONS
is true
and FEATURE_CONTENT_TRANSITIONS
is 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 的功能标志。然而令我困惑的是本文 https://developer.android.com/training/material/animations.html#TransitionsAndroid 开发者网站指出,启用FEATURE_CONTENT_TRANSITIONS
是实现自定义活动转换所必需的。
这是我的问题:
- 这两个标志有什么区别?在这种情况下,“活动转换”和“内容转换”有什么区别?
- Why is
FEATURE_ACTIVITY_TRANSITIONS
启用和FEATURE_CONTENT_TRANSITIONS
默认禁用?什么时候启用FEATURE_CONTENT_TRANSITIONS
实际需要标志吗?
- 禁用它是否有意义
FEATURE_ACTIVITY_TRANSITIONS
并启用FEATURE_CONTENT_TRANSITIONS
?或者确实FEATURE_CONTENT_TRANSITIONS
要求FEATURE_ACTIVITY_TRANSITIONS
也要启用吗?
Thanks!
我很高兴有机会回答这些问题,因为文档不太清楚。
早期,只有一面旗帜FEATURE_CONTENT_TRANSITIONS
处理这两个功能。当 Material 应用程序在启用时出现意外行为时,我们将它们分开。所以一些旧的文档可能仍然说你必须启用FEATURE_CONTENT_TRANSITIONS
当他们意味着时获得活动转换FEATURE_ACTIVITY_TRANSITIONS
.
- 这两个标志有什么区别?是什么
“活动转换”和“内容”之间的区别
在这种情况下过渡”?
在这种情况下,活动转换意味着您调用startActivity
与创建的捆绑包ActivityOptions.makeSceneTransitionAnimation
或者,您的活动是从该捆绑包开始的。活动转换会修改您的布局(例如元素淡入淡出、移动共享元素),因此如果您的活动不喜欢这样,您应该禁用FEATURE_ACTIVITY_TRANSITIONS
.
内容转换使用TransitionManager
你打电话时setContentView
(除了第一次)。通常,您会得到交叉淡入淡出效果,但如果您的 Activity 的内容有共同点,例如共享 ID 或使用transitionName
, 你会得到ChangeBounds
这些视图之间的行为。您可以通过自定义来更改转换的详细信息TransitionManager
使用 XML 或代码与您的窗口关联。
- Why is
FEATURE_ACTIVITY_TRANSITIONS
启用和FEATURE_CONTENT_TRANSITIONS
默认禁用?什么时候
启用FEATURE_CONTENT_TRANSITIONS
实际需要标志吗?
FEATURE_CONTENT_TRANSITIONS
当内容更改时使用 TransitionManager。默认情况下,这是交叉淡入淡出,这对于某些应用程序来说非常糟糕。另一方面,FEATURE_ACTIVITY_TRANSITIONS
默认情况下不会对大多数应用程序执行任何操作。您必须选择以这种方式开始一项活动,这样才能安全地开启。
- 禁用它是否有意义
FEATURE_ACTIVITY_TRANSITIONS
并启用FEATURE_CONTENT_TRANSITIONS
?
或者确实FEATURE_CONTENT_TRANSITIONS
要求FEATURE_ACTIVITY_TRANSITIONS
也要启用吗?
是的,但可能性不大。如果您的应用程序喜欢FEATURE_CONTENT_TRANSITIONS
,它应该可以很好地与FEATURE_ACTIVITY_TRANSITIONS
。如果您想明确限制人们使用共享元素调用您的 Activity,或者您不喜欢标准的 Enter 过渡效果,则可以禁用它以防止其他应用程序调用您的 Activity 时出现该效果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)