Jos*_*osh 6 android transition shared-element-transition
我目前正在使用以下代码将屏幕右侧的块转换为左侧的共享元素:
FragmentDetail newFragment = FragmentDetail.newInstance(id);
setSharedElementReturnTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.trans_move));
setExitTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.explode));
View block = view.findViewById(R.id.blocks);
block.setTransitionName("block");
newFragment.setSharedElementEnterTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.trans_move));
newFragment.setEnterTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.explode));
newFragment.setTransitionId(block.getTransitionName());
FragmentTransaction trans = getFragmentManager().beginTransaction();
trans.replace(R.id.container, newFragment);
trans.addToBackStack(null);
trans.addSharedElement(block, block.getTransitionName());
trans.commit();
Run Code Online (Sandbox Code Playgroud)
这正是我想要的方式,但是我希望在按下后退按钮时反转效果,将项目重新设置为动画.原样,爆炸动画播放,但过渡不会.
任何帮助是极大的赞赏.
谢谢乔希
带有 Android 导航组件的 KOTLIN
对于在使用 Android 导航组件时在这里寻找此问题答案的任何人,您可以通过将这些行添加到起始片段的 onViewCreated 函数来使反向过渡动画工作:
postponeEnterTransition()
view.doOnPreDraw { startPostponedEnterTransition() }
Run Code Online (Sandbox Code Playgroud)
如果您通过单击 RecyclerView 项目打开第二个片段,您通常会使用它。
假设您有两个片段A和B,并A提交一个片段事务来启动片段B。
那么这意味着退出和重新进入转换应设置为 on A,进入和返回转换应设置为 on B。
看起来您正在调用setSharedElementReturnTransition调用片段而不是被调用片段(newFragment在本例中为 ),这可能会导致问题。
顺便说一句,您应该考虑在片段的方法中调用set*****Transition()和方法,而不是在提交片段事务之前立即调用。如果一个片段被破坏并重新创建,这些过渡将被忘记......所以将它们设置起来更安全。setSharedElement*****Transition()onCreate()onCreate()
| 归档时间: |
|
| 查看次数: |
3776 次 |
| 最近记录: |