我正在使用包含三个片段的视图寻呼机。现在我想在刷子中使用FirstFragment中的ImageView1和Second Fragment中的ImageView2之间的共享元素转换。如何做到这一点以进行这种转换我们需要添加fragmentTransaction.addSharedElement(..),但在这种情况下我们没有明确地进行任何片段事务。
答案 0 :(得分:1)
视图寻呼机实际上在内部执行一些片段事务。但是,碎片会提前添加,而不是在用户滑动时添加。所以你不会看到动画。
自定义视图寻呼机动画的方法是实现自定义ViewPager.PageTransformer
,然后将其应用于viewPager.setPageTransformer(yourPageTransformer)
。
请参阅docs。
但是,你必须自己处理动画。
答案 1 :(得分:1)
我遇到了同样的问题。在ViewPager页面之间,标准共享元素过渡不起作用。
所以我写了SharedElement ViewPager library。它既适用于由onClick()事件引起的过渡(viewPager.setCurrentItem(x)),也适用于用户引起的页面幻灯片。动画绑定到手指移动。
看看。
SharedElementPageTransformer demo gif
ArrayList<Fragment> fragments = new ArrayList<>();
fragments.add(hello_fragment);
fragments.add(small_picture_fragment);
SharedElementPageTransformer transformer =
new SharedElementPageTransformer(this, fragments);
transformer.addSharedTransition(R.id.smallPic_image_cat, R.id.bigPic_image_cat);
viewPager.setPageTransformer(false, transformer);
viewPager.addOnPageChangeListener(transformer);
您唯一需要做的就是在需要动画的 ImageView 顶部的 RecyclerView 片段上创建其他的 ImageView 。然后,您可以在目标 ViewPager 页面上从它过渡到 ImageView 。