使用ViewPager实现共享元素转场

6
我在使用sharedElementTransitions时遇到了问题。我有一个activity和一个fragment,在这个fragment中,我启动了一个带有sharedElementTransitions的新activity。在这个activity中,我启动了一个fragment,并且这个fragment包含了viewPager。现在,当我在这个fragment中调用setTransitionName时,一切都很顺利,但是当我把它移到我的viewPager中的fragment中并在onCreateView内部调用它时,进入动画就没有流畅度了,而回退动画则按预期工作。我非常确定可以使用postponeEnterTransition来解决这个问题,在我的带有viewPager的fragment的activity中,我调用了postponeEnterTransition(),并在我的fragment中调用了getActivity()。startPostponedEnterTransition(),但仍然无法正常工作......有什么想法可能出错了吗?
1个回答

4
// Postpone the shared element enter transition in onCreate()
postponeEnterTransition();

// after the layout and data is ready, invoke startPostponedEnterTransition() to start the enter transition animation
// for example: 
sharedElement.getViewTreeObserver().addOnPreDrawListener(
 new ViewTreeObserver.OnPreDrawListener() {
     @Override
     public boolean onPreDraw() {
         sharedElement.getViewTreeObserver().removeOnPreDrawListener(this);
         startPostponedEnterTransition();
         return true;
     }
});

请参考http://www.androiddesignpatterns.com/2015/03/activity-postponed-shared-element-transitions-part3b.html了解更多细节。希望对您有所帮助!

1
这里强烈反对仅提供链接的答案,因为链接可能在未来失效。建议您编辑答案并引用您引用的来源。 - Anirudh Sharma
如果我有多个共享元素怎么办?我需要为它们全部添加preDrawListeners吗? - Lester

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接