android - Android Lollipop 中属于不同 Activity 的 fragment 之间的共享元素转换

标签 android animation android-fragments android-animation android-5.0-lollipop

我在属于一个 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/

相关文章:

Android - SupportMapFragment with GoogleMaps API 2.0 给出 IllegalArgumentException

java - 为什么我无法将背景图像设置到从相关 fragment 类声明到 fragment xml 配置中的 ImageView 中?

android:layout_weight 意外行为?

android - 程序类型已经存在 : org. intellij.lang.annotations.Flow

javascript - Highcharts:我可以用动画来更改条形图上条形的顺序吗?

javascript - 页面转换——等到ajax请求发出

android - 在 FragmentStatePagerAdapter 的 instantiateItem() 中实现 setTag() 和 findViewWithTag()

android - 如何验证应用程序用户登录用户名和密码

android - Safetynet 问题状态 {statusCode=NETWORK_ERROR, resolution=null}

iOS - 多层使动画变慢