5

我想在 ViewPager 中使用 SharedElement 从一个 Fragment 过渡到另一个 Fragment 为视图设置动画。

我在 ViewPager 中有 3 个片段,每个片段在 XML 文件中都有一个具有相同转换名称的 TextView。

现在,当 ViewPager 滑动另一个 Fragment 时,我希望看到 SharedElement 的实际效果。

4

2 回答 2

1

我有同样的问题。标准共享元素转换在 ViewPager 页面之间不起作用。

所以我写了一个共享元素视图分页器库。它既适用于由 onClick() 事件(例如 viewPager.setCurrentItem(x) )引起的转换,也适用于由用户引起的页面幻灯片。动画绑定到手指运动。

这不是 android 转换,因此可能存在一些障碍。不过看看。

SharedElementPageTransformer 演示

用法

  1. 以相同的顺序将 ViewPager 中的所有片段添加到列表中。
        ArrayList<Fragment> fragments = new ArrayList<>();
        fragments.add(hello_fragment);
        fragments.add(small_picture_fragment);
  1. 大概在Activity.onCreate()创建SharedElementPageTransformer是指活动:
        SharedElementPageTransformer transformer =
                new SharedElementPageTransformer(this,  fragments);
  1. 通过传递需要链接在一起的视图 ID 对来添加共享过渡
        transformer.addSharedTransition(R.id.smallPic_image_cat, R.id.bigPic_image_cat);
  1. 将我们的转换器设置为 ViewPager 的 pageTransformeronPageChangeListener。
        viewPager.setPageTransformer(false, transformer);
        viewPager.addOnPageChangeListener(transformer);
于 2019-05-02T12:12:57.733 回答
-1

这可能已经很长时间了,但可能会有所帮助。完全有可能在 2 个 viewPager 之间共享元素转换,因为我自己已经做过了。

我认为您可能缺少的是过渡名称必须是唯一的! 所以它必须以编程方式而不是在 XML 中设置!这在 ViewPager 中非常重要,因为同一个视图可能会被多次放大。

imageView.setTransitionName("unique_name");

这样,过渡就知道应该播放什么元素;)

于 2016-06-24T23:16:54.027 回答