我正在尝试在片段之间进行共享元素转换,使用replace()
添加第二个片段时一切正常,但是在代码库add()
中使用了很多,但在使用时, 转换只是跳到结束值
是否可以在添加的片段之间进行转换? 感谢
@Override
public void onClick(View v) {
setSharedElementReturnTransition(TransitionInflater.from(getActivity())
.inflateTransition(android.R.transition.move));
FragmentB secondFragment = new FragmentB();
secondFragment.setSharedElementEnterTransition(TransitionInflater.from(getActivity())
.inflateTransition(android.R.transition.move));
getFragmentManager().beginTransaction()
.add(R.id.container, secondFragment)
.addToBackStack(null)
.addSharedElement(imageView, imageView.getTransitionName())
.commit();
}
答案 0 :(得分:2)
因为系统不会从第一个片段经历onPause,所以它不会发生。因为当你添加一个新片段时,新片段会出现在旧片段的顶部。
但你可以伪造它,虽然你会有更多的代码!
下面有一个示例:
https://github.com/Kisty/FragmentTransitionExample
和视频没有完全相关但可以帮助您理解:
答案 1 :(得分:0)
尝试为FragmentTransaction添加.detach()方法。
FragmentManager manager = activity.getSupportFragmentManager ();
Fragment currentFragment = manager.findFragmentById (CONTAINER_ID);
int intoContainerId = currentFragment.getId ();
manager.beginTransaction ()
.setTransition (FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.addSharedElement(view, transitionName)
.addToBackStack (withTag)
.detach(currentFragment)
.add(intoContainerId, newFragment, withTag)
.commit();
答案 2 :(得分:0)
试试这个
getSupportFragmentManager().beginTransaction()
.addSharedElement(myImage, "mytransition")
.add(R.id.recycler_view_container, myFragment2)
.hide(myFragment1)
commit();
为我工作