android - 如何在 ViewPager fragment 中应用共享元素动画?

标签 android animation android-design-library shared-element-transition

我想在 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

用法

  1. 以相同顺序将 ViewPager 中的所有 fragment 添加到列表中。
        ArrayList<Fragment> fragments = new ArrayList<>();
        fragments.add(hello_fragment);
        fragments.add(small_picture_fragment);
  1. 大概在 Activity.onCreate() 中创建 SharedElementPageTransformer
    this 指的是 Activity :
        SharedElementPageTransformer transformer =
                new SharedElementPageTransformer(this,  fragments);
  1. 通过传递需要链接在一起的成对 View ID 添加共享转换
        transformer.addSharedTransition(R.id.smallPic_image_cat, R.id.bigPic_image_cat);
  1. 将我们的 transformer 设置为 ViewPager 的 pageTransformer AND onPageChangeListener。
        viewPager.setPageTransformer(false, transformer);
        viewPager.addOnPageChangeListener(transformer);

关于android - 如何在 ViewPager fragment 中应用共享元素动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33410677/

相关文章:

android - Design v24.2.1 CollapsingToolbarLayout 中的标题问题

java - 无法在 Android Activity 布局 XML 文件中实例化自定义类

java - 启动 android studio 时出错

android - 如何使用 react-native-router-flux 在导航栏中制作右键?

javascript - 背景位置变量不起作用

objective-c - Sprite Kit 动画分数递增

html - SVG动画(SMIL),如何重复整个动画?

android - AppBarLayout 奇怪地占用空间并将内容向下推

android - 如何在Android中实现NavigationView的可扩展菜单

java - 使用 SharedPreference 实现首选项,适用于 Android 动态壁纸