共享项转换在背面的片段中不起作用

问题描述 投票:10回答:1

我正在使用Fragment Navigation Pattern(一个具有很多片段的活动)开发一个Android应用。我已经通过遵循this guide来实现了[[Shared Item Transitions,但它们仅在向前发展,不能回击。

我的片段(称为UserFragment)由ViewPager以及另外3个带有RecyclerViews的片段组成。单击RecyclerViews中的任何项目将打开另一个具有相同视图的UserFragment。切换到新片段时,过渡效果很好,但是

关闭时我无法使它起作用

。回击时,片段会淡出,而先前的片段会淡入。TL; DR:

    有问题的共享元素是顶部的圆形图像视图
  • transitionName
  • 个人资料
  • SharedItemTransition是扩展了TransitionSet]的自定义类
  • 我已经在每个recyclerview中为每个项目指定了唯一的过渡名称,包括它们的用户ID,列表类型和位置索引(如果它们不是唯一的,那么将来也将无法使用)

  • 这是我的[[RecyclerView适配器:
]的onBindViewHolder方法>

public void onBindViewHolder(final UserViewHolder uvh, int position) { final LocUser user = users.get(position); String transition = "user_" + user.id() + "_type_" + type + "_item_" + position + "_profile_image"; uvh.name.setText(user.name()); uvh.username.setText(user.handle()); Global.setImage(uvh.userImage, user.profileImage()); ViewCompat.setTransitionName(uvh.userImage, transitionName(position)); uvh.root.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { activity.openUserProfile(user, uvh.userImage); } }); }

这是我的
活动方法,它调用FragmentManager并开始动画:

public void openUserProfile(LocUser user, ImageView view) { UserProfileFragment uf = UserProfileFragment.create(user); uf.setExitTransition(new Fade()); uf.setEnterTransition(new Fade()); uf.setSharedElementEnterTransition(new SharedItemTransition()); uf.setSharedElementReturnTransition(new SharedItemTransition()); getSupportFragmentManager() .beginTransaction() .addSharedElement(view, "profile") .replace(R.id.container, uf) .addToBackStack(null) .commit(); }

这是它的外观:
Screenshot

我正在使用带有片段导航模式(一个活动包含很多片段)的Android应用。通过遵循本指南,我设法实现了共享项目转换,但是它们仅适用于...

android android-fragments transitions
1个回答
0
投票
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) postponeEnterTransition() vm.state.observe(viewLifecycleOwner, Observer { if (it == QuizListViewModel.State.Ready) { (view.parent as? ViewGroup)?.doOnPreDraw { startPostponedEnterTransition() } } }) }
© www.soinside.com 2019 - 2024. All rights reserved.