Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在ViewPager片段中应用共享元素动画?_Android_Animation_Android Design Library_Shared Element Transition - Fatal编程技术网

Android 如何在ViewPager片段中应用共享元素动画?

Android 如何在ViewPager片段中应用共享元素动画?,android,animation,android-design-library,shared-element-transition,Android,Animation,Android Design Library,Shared Element Transition,我想用SharedElement在ViewPager中从一个片段转换到另一个片段来设置视图的动画 我在一个ViewPager中有3个片段,每个片段在XML文件中都有一个具有相同转换名称的TextView 现在,当ViewPager滑动另一个片段时,我想看到SharedElement的运行。这可能是一段很长的时间,但可能会有所帮助。 这是完全有可能的共享元素之间的两个ViewPager转换,因为我已经做了自己 我认为您可能缺少的是过渡名称必须是唯一的 因此,它必须以编程方式设置,而不是用XML!它

我想用SharedElement在ViewPager中从一个片段转换到另一个片段来设置视图的动画

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


现在,当ViewPager滑动另一个片段时,我想看到SharedElement的运行。

这可能是一段很长的时间,但可能会有所帮助。 这是完全有可能的共享元素之间的两个ViewPager转换,因为我已经做了自己

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

imageView.setTransitionName("unique_name");

这样,转换就知道应该在哪个元素上播放;)

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

所以我写了一个图书馆。它既适用于由onClick()事件(如viewPager.setCurrentItem(x))引起的转换,也适用于由用户引起的页面幻灯片。动画绑定到手指移动

这不是android的过渡,所以可能会有一些障碍。不过请看一看

用法
  • 按相同顺序将ViewPager中的所有片段添加到列表中
  • 通过传递需要链接在一起的视图ID对来添加共享转换
  • 将转换器设置为ViewPager的pageTransformer和onPageChangeListener

  • 嗨,rahul使用这个链接在片段中进行共享元素转换谢谢@Jinu,我也试过了。但这并没有满足我的担忧。我想使用ViewPager在片段中设置视图动画。内部FragmentPagerAdapter.shared元素转换对virewpager不可用,但您可以从flickr@RahulUpadhyay等元素转换。您有任何解决方案吗?@Shubham,还没有。这不是我想要的查看页面的方式,但我们可以使用与活动转换相同的片段。你能详细说明你的答案吗?
            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);