我想在 ViewPager 中使用 SharedElement 从一个 Fragment 过渡到另一个 Fragment 为 View 设置动画。
我在 ViewPager 中有 3 个 fragment ,每个 fragment 在 XML 文件中都有一个具有相同转换名称的 TextView。
现在,当 ViewPager 滑动另一个 Fragment 时,我想看到 SharedElement 在运行。
最佳答案
我遇到了同样的问题。标准共享元素转换在 ViewPager 页面之间不起作用。
所以我写了一个Shared Element View Pager图书馆。它适用于由 onClick() 事件(例如 viewPager.setCurrentItem(x) )引起的转换和由用户引起的页面滑动。动画绑定(bind)到手指运动。
这不是 Android 转换,因此可能存在一些障碍。不过,请看一下。
SharedElementPageTransformer demo
用法
- 以相同顺序将 ViewPager 中的所有 fragment 添加到列表中。
ArrayList<Fragment> fragments = new ArrayList<>();
fragments.add(hello_fragment);
fragments.add(small_picture_fragment);
- 大概在 Activity.onCreate() 中创建 SharedElementPageTransformer。
this 指的是 Activity :
SharedElementPageTransformer transformer =
new SharedElementPageTransformer(this, fragments);
- 通过传递需要链接在一起的成对 View ID 添加共享转换
transformer.addSharedTransition(R.id.smallPic_image_cat, R.id.bigPic_image_cat);
- 将我们的 transformer 设置为 ViewPager 的 pageTransformer AND onPageChangeListener。
viewPager.setPageTransformer(false, transformer);
viewPager.addOnPageChangeListener(transformer);
关于android - 如何在 ViewPager fragment 中应用共享元素动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33410677/