【发布时间】:2015-11-17 09:58:37
【问题描述】:
我正在制作活动 X 和活动 Y 之间的过渡动画。
X 包含一个包含图片的列表,当点击图片时,在活动 Y 中会展开和“缩放”。
所以,这张图片是 X 和 Y 之间的共享元素。我在 XML 布局中设置了它的 transitionName 属性。
这是启动活动的代码Y:
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, clickedImage, clickedImage.getTransitionName());
startActivityForResult(intent, OPEN_PICTURE_REQUEST, options.toBundle());
到这里为止,一切正常。但是,我还想在输入时为活动 Y 的布局设置动画。
为此,我在 XML 文件 (picture_enter.xml) 中定义了过渡:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:transitionOrdering="together">
<transition
class="android.transition.Explode"
android:startDelay="200">
<targets>
<target android:targetId="@+id/top_toolbar_container" />
</targets>
</transition>
</transitionSet>
最后,在活动的onCreate中Y我初始化了过渡:
TransitionInflater inflater = TransitionInflater.from(this);
Transition transition = inflater.inflateTransition(R.transition.picture_enter);
Window window = getWindow();
window.setEnterTransition(transition);
但这永远不会执行。只有图像的“缩放”效果才能正常工作。我也尝试过以编程方式定义过渡。
有什么建议吗?
【问题讨论】:
-
我怀疑
<targets>标签是这种奇怪行为的主要原因。如果您删除<targets>标签,默认情况下过渡将应用于activity Y。小建议:可以直接在transitionSet里面定义explode,slide等转场,transition标签主要用来定义自定义转场。
标签: android android-activity android-5.0-lollipop android-transitions