我有一个视图寻呼机,其中包含4个完全不同的片段。
从该寻呼机的片段A我想创建一个像这样的新片段:
Transition changeTransform = TransitionInflater.from(getActivity()).inflateTransition(R.transition.change_image_transform);
Transition explodeTransform = TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.explode);
// Setup exit transition on first fragment
setSharedElementReturnTransition(changeTransform);
setExitTransition(explodeTransform);
// Setup enter transition on second fragment
PropertyFragment fragment = new PropertyFragment();
fragment.setSharedElementEnterTransition(changeTransform);
fragment.setEnterTransition(explodeTransform);
FragmentTransaction ft = getChildFragmentManager().beginTransaction()
.replace(R.id.container, fragment)
.addToBackStack(fragment.getFragmentTag())
.addSharedElement(icon, icon.getTransitionName())
.addSharedElement(text, text.getTransitionName());
ft.commit();
R.id.Container是FragmentA的父RelativeLayout(不是活动的) R.transition.change_image_transform如下:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeTransform />
<changeBounds />
<changeImageTransform/>
</transitionSet>
片段事务有效,并且发生了explodeTransform。但是共享元素转换不起作用。就像他们甚至不在那里一样。我已尝试以编程方式创建转换而不是XML以及这些的所有组合:,我可以。什么都行不通。转换名称在两端都是正确的100%。
我还尝试了事务的getChildFragmentManager(),getactivity()。getSupportFragmentManager(),但它也没有做任何改变。
当凝视片段不属于Viewpager时,转换也会起作用。所以问题就出现了。你有什么想法吗?我也发现了这个:Fragment shared element transitions don't work with ViewPager我认为它与我的相同,但解决方案仅适用于Activity转换,所以它并没有真正帮助。