Articles of 片段转换

使用片段共享转换时,返回转换无法正常工作

我有2个片段ListMovieFragment和ListMovieFragment 。 我有一个在MainActivity实现的ListMovieFragment中的接口。 我正在使用共享元素转换; 当我点击ListMovieFragment的图像视图时,在MainActivity调用onMovieSelected 。 从ListMovieFragment转换工作。 但是当我点击后退button时,从DetailMovieFragment转换到ListMovieFragment失败。 这是MainActivity。 我想我得到了一个不正确的组合来设置片段的转换。 public class MainActivity extends AppCompatActivity implements ListMovieFragment.MovieSelectedListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(savedInstanceState == null) { ListMovieFragment listMovieFragment = new ListMovieFragment(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.activity_main, listMovieFragment, ListMovieFragment.TAG); fragmentTransaction.commit(); } } @Override public void onMovieSelected(int movieId) { DetailMovieFragment detailMovieFragment = (DetailMovieFragment)getSupportFragmentManager().findFragmentByTag(DetailMovieFragment.TAG); […]

在片段之间animation的共享元素

我试图从一个RecyclerView的选定项目animation2个简单的视图到一个新的片段。 我已经看了很多从一个Activity到另一个Activity的animation共享元素的例子,但是在同一个Activity中,很less有一个将一个共享元素从一个Fragmentanimation到另一个Fragment的例子。 它几乎工作。 这是我的结构。 活动 – 全屏Fragment1与RecyclerView – 全屏Fragment2的细节 当用户在Fragment1的RecyclerView中select一个项目时,我用带有View的Fragment2replaceFragment1,其中的共享元素位于不同的位置和大小。 有一些技巧可以让它起作用,你必须确保你的transitionName对于列表中的每个项目是唯一的,当然transitionName必须和Fragment2中的元素的transitionName匹配,以供animation使用。 我有这个部分的工作,当我select一个项目,2共享视图做animation,只是不完全如何你会期望当做两个活动之间。 如果我select靠近屏幕底部的项目,它将绘制“片段视图2”并为其中的2个共享视图制作animation,就好像它们位于屏幕顶部的项目中一样。 很难解释。 这里有一些照片 片段1 Fragment2 在这两个片段中,我设置了以下内容 setSharedElementEnterTransition(new ChangeBounds()); setSharedElementReturnTransition(new ChangeBounds()); setAllowEnterTransitionOverlap(true); setAllowReturnTransitionOverlap(true); 也在他们的父Activity在onCreate()我已经设置 getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); 任何想法为什么我的共享元素animation是从我的屏幕的顶部开始,即使他们是在我的屏幕底部的选定项目开始?

片段共享元素转换与add()而不是replace()?

我试图使片段之间的共享元素转换,使用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(); }

共享元素转换与FragmentTransaction.replace()一起工作,但不适用于FragmentTransaction.add()

新的共享元素转换工作时,我使用片段“ replace ”,但我似乎无法使其工作片段“ 添加 ”。 我在这两种情况下使用相同的容器。 更多细节: 活动 – 布局 – > <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ffff" android:orientation="vertical" > </FrameLayout> 在活动启动时,我将Fragment1添加到屏幕上 getFragmentManager().beginTransaction().replace(R.id.container,new TransitionTestFragment1(), "TransitionTestFragment1").commit(); 在Fragment1布局中的视图的单击事件 – >我添加Fragment2到屏幕上。 我在第一个片段的onCreateView中设置侦听器 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final TransitionSet transitionSet = new TransitionSet(); transitionSet.addTransition(new ChangeImageTransform()); transitionSet.addTransition(new ChangeBounds()); transitionSet.addTransition(new ChangeTransform()); transitionSet.setDuration(300); View […]

如何推迟在Android棒棒糖的片段的input转换?

在Android Lollipop中, Activity#postponeEnterTransition()和Activity#startPostponedEnterTransition()方法为Activity提供了延迟启动进入和退出共享元素转换的能力,直到加载所有数据。 这些工作很适合Activity转换。 使用Fragment过渡时,有没有办法达到同样的效果?