Android 使用带有ChangeImageTransform的共享元素转换在两个活动之间设置ImageView动画
我试图在Android API level 21中的两个活动之间将一个ImageView动画化到另一个位置。由于Android L预览中的“MoveImage”已被删除,因此我改用了“”,但文档中的示例代码不起作用(这两个图像分别设置了动画)Android 使用带有ChangeImageTransform的共享元素转换在两个活动之间设置ImageView动画,android,android-5.0-lollipop,shared-element-transition,activity-transition,Android,Android 5.0 Lollipop,Shared Element Transition,Activity Transition,我试图在Android API level 21中的两个活动之间将一个ImageView动画化到另一个位置。由于Android L预览中的“MoveImage”已被删除,因此我改用了“”,但文档中的示例代码不起作用(这两个图像分别设置了动画) 有没有任何有效的例子?谢谢 要在具有共享元素的两个活动之间制作屏幕过渡动画, 您可以阅读并遵循上述步骤: 在主题中启用窗口内容转换 在样式中指定共享元素过渡 将转换定义为XML资源 使用android:transitionName属性为两个布局中的共享
有没有任何有效的例子?谢谢 要在具有共享元素的两个活动之间制作屏幕过渡动画, 您可以阅读并遵循上述步骤:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeBounds>
<targets>
<target android:targetId="@id/ivA" />
<target android:targetId="@id/ivB" />
</targets>
</changeBounds>
<changeImageTransform>
<targets>
<target android:targetId="@id/ivA" />
<target android:targetId="@id/ivB" />
</targets>
</changeImageTransform>
</transitionSet>
Bundle bundle = null;
if (activity != null) {
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(activity, Frag2_, "MYTRANSITIONVIEW");
bundle = options.toBundle();
}
activity.startActivity(i, bundle);
或者,如果只需要对ivA和ivB设置动画,则只需这样做:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeBounds/>
<changeImageTransform/>
</transitionSet>
我根据本指南、其他一些指南和参考资料完成了这项工作 此样式的过渡集。我把它放在res/transition下:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeBounds>
<targets>
<target android:targetId="@id/ivA" />
<target android:targetId="@id/ivB" />
</targets>
</changeBounds>
<changeImageTransform>
<targets>
<target android:targetId="@id/ivA" />
<target android:targetId="@id/ivB" />
</targets>
</changeImageTransform>
</transitionSet>
它在API21客户机上工作。它在API 16客户端上不起作用,因为XML标记无效
我希望这有帮助
轻微的更新,为了在退出时获得反向转换,我不得不打电话
supportFinishAfterTransition();
而不是完成() 我一直在尝试让它工作,但是新活动的enter转换逐渐消失,ImageView是旧活动中显示的最后一个内容。退出转换仍然有效。@timmahtimmah您是否遵循了文档中的所有步骤?请提供更多信息,谢谢:)我知道发生了什么事。我正在将视图添加到ListView标题中,因此在转换之后才能找到它。解决方案是推迟转换,然后在ListView的OnPreDrawListener中启动它。您好,我曾尝试在我的应用程序中使用它,但当我单击列表的某个项目时,列表的图像会转到另一个应用程序(这将变得更大),但它的大小保持不变。如果a按“后退”按钮,图像将变为正确的大小并返回列表。@Radu,为什么有人不能理解它?它不应该是res/transitions,它应该是res/transition:)
<item name="android:windowContentTransitions">true</item>
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowSharedElementEnterTransition">@transition/my_transition</item>
<item name="android:windowSharedElementExitTransition">@transition/my_transition</item>
Bundle bundle = null;
if (activity != null) {
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(activity, Frag2_, "MYTRANSITIONVIEW");
bundle = options.toBundle();
}
activity.startActivity(i, bundle);
supportFinishAfterTransition();