我在属于一个 Activity 的 fragment 中有一个共享元素。
我想在 Android Lollipop 中使用属于另一个 Activity 的 fragment 的一部分的元素进行共享元素转换。
这可能吗?
我怎样才能做到这一点?
最佳答案
这是可能的。
首先,当您在 fragment 中检测到转换即将发生时,构建一个 Pair<View, String>
的数组。您用 View 和转换名称填充它。
例如,如果您想要从缩略图动画到全宽图像:
Pair[] pairs = new Pair[1];
pairs[0] = new Pair(thumbnailImage, "THUMBNAIL_IMAGE");
其次,将该数组传递给 fragment 的 Activity ,以便它可以启动实际的转换。 (我正在使用 Otto 传递那个事件,如果你愿意,你可以使用通常的回调)。
然后,在您的 Activity 中,开始第二个 Activity 。 (我为此创建了一个简单的方法)
public static void transitionExpand(Activity activity, Intent intent, Pair<View, String>[] sharedElements) {
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements);
ActivityCompat.startActivity(activity, intent, options.toBundle());
}
在您的第二个 Activity 中,您可以按照通常的方式添加 fragment 。然后,在第二个 fragment 的 onViewCreated()
中方法,你可以调用:
ViewCompat.setTransitionName(fullWidthImage, "THUMBNAIL_IMAGE");
希望对你有帮助
关于android - Android Lollipop 中属于不同 Activity 的 fragment 之间的共享元素转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27524674/