未执行活动转换(棒棒糖)

我正在为活动X和活动Y之间的转换制作animation。
X包含带图像的列表,当单击图像时,将在活动Y中展开和“缩放”。
所以,这个图像是XY之间的共享元素。 我已经在XML布局中设置了它的transitionName属性。
这是开始活动的代码Y

 ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, clickedImage, clickedImage.getTransitionName()); startActivityForResult(intent, OPEN_PICTURE_REQUEST, options.toBundle()); 

在此之前,一切正常。 但是,我也想在input时animationY的布局。
为此,我已经在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> 

最后,在活动的开始阶段,我开始转型:

 TransitionInflater inflater = TransitionInflater.from(this); Transition transition = inflater.inflateTransition(R.transition.picture_enter); Window window = getWindow(); window.setEnterTransition(transition); 

但是这从来没有执行过。 只有图像的“缩放”效果才能正常工作。 我也尝试以编程的方式定义过渡。
有什么build议么?

  • 活动和共享视图之间的animation:animation结尾的小故障/黑客攻击?
  • 使用SharedElement活动转换与自定义视图
  • 共享元素转换:将活动转换为嵌套在另一个活动中的片段
  • 将列表项目转换为Google Inbox等细节
  • 平滑的幻灯片图像的方式
  • EnterTransitionCoordinator在Android 5.0中导致NPE
  • 使活动自上而下
  • 底部的animation版面更改
  • 您应该使用以下窗口标签的应用程序主题:

     <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:theme =“@ style / CustomActionBarTheme”

    在活动X中,

      ActivityOptionsCompat options = ActivityOptionsCompat .makeSceneTransitionAnimation(activity,img_pic, "img_pic"); 

    活动X和活动Y的布局文件中的“img_pic”是android:transitionName =“img_pic”。

    注意: android:transitionName值应该是相同的转换发生。

    用ActivityOptionsCompat或ActivityOptions打开Activity Y,

     Intent intent = new Intent(context,Activity_Y.class); startActivity(intent, options.toBundle());