我正在为活动X和活动Y之间的转换制作动画。
X包含带图像的列表,当单击图像时,将在活动Y中展开和“缩放” 。
所以,这张图片是X和Y之间的共享元素。我已经transitionName
在XML布局中设置了它的属性。
这是开始活动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>
最后,在YonCreate
的活动中,我感受到了转型:
TransitionInflater inflater = TransitionInflater.from(this);
Transition transition = inflater.inflateTransition(R.transition.picture_enter);
Window window = getWindow();
window.setEnterTransition(transition);
但这从来没有执行过。只有图像的“缩放”效果才能正常工作。我也尝试以编程方式定义过渡。 有什么建议么?
发布于 2018-05-16 10:10:27
应该将应用程序主题与下列窗口标记一起使用:
<style name="CustomActionBarTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- enable window content transitions -->
<item name="android:windowContentTransitions">true</item>
<!-- enable overlapping of exiting and entering activities -->
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
</style>
在Mainfest文件中,应用程序内部标签使用Android:main=“@Style/CustomActionBarTheme”
在Activity X中,
ActivityOptionsCompat options = ActivityOptionsCompat
.makeSceneTransitionAnimation(activity,img_pic, "img_pic");
“IMG”_PIC“是android:TrantionName=”img“_PIC“在活动X和活动Y的布局文件中。
为了进行转换,转换名称的值应该是相同的。
用活动选项打开Activity Y-Compat或ActivityOptions,
Intent intent = new Intent(context,Activity_Y.class);
startActivity(intent, options.toBundle());
https://stackoverflow.com/questions/-100008482
复制相似问题