未执行活动转换(Lollipop)

Ale*_*aro 16 android android-activity android-transitions android-5.0-lollipop

我正在设置活动X和活动Y之间的过渡动​​画.
X包含带有图像的列表,单击图像时会展开并在活动Y中 "缩放" .
因此,此图像是XY之间的共享元素.我已经transitionName在XML布局中设置了它的属性.
这是启动活动Y的代码:

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, clickedImage, clickedImage.getTransitionName());
startActivityForResult(intent, OPEN_PICTURE_REQUEST, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

直到这里,一切正常.但是,我还想在输入时为活动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>
Run Code Online (Sandbox Code Playgroud)

最后,在onCreate活动Y中我将初始化过渡:

TransitionInflater inflater = TransitionInflater.from(this);
Transition transition = inflater.inflateTransition(R.transition.picture_enter);
Window window = getWindow();
window.setEnterTransition(transition);
Run Code Online (Sandbox Code Playgroud)

但这从未执行过.只有图像的"缩放"效果才能正常工作.我也尝试过以编程方式定义转换.
有什么建议?

JIt*_*rna 4

您应该使用具有以下窗口标签的应用程序主题:

<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>
Run Code Online (Sandbox Code Playgroud)

在 Mainfest 文件中,应用程序标签内使用 android:theme="@style/CustomActionBarTheme"

在活动 X 中,

       ActivityOptionsCompat options = ActivityOptionsCompat
                                    .makeSceneTransitionAnimation(activity,img_pic, "img_pic");
Run Code Online (Sandbox Code Playgroud)

其中“img_pic”在 Activity X 和 Activity Y 的布局文件中均为 android:transitionName="img_pic"。

注意: android:transitionName 值应该相同才能发生转换。

使用 ActivityOptionsCompat 或 ActivityOptions 打开活动 Y ,

Intent intent = new Intent(context,Activity_Y.class);
startActivity(intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)