使用 ViewPager 从 Activity 到 Fragment 的共享元素转换

Shared element transition from Activity to Fragment using ViewPager

我在 Activity

中使用此代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        view.setTransitionName("pic");

    ActivityOptionsCompat a=ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) context,view,view.getTransitionName());

    Intent i3=new Intent(context,MovieInfo.class);
    i3.putExtra("id",view.getId());
    startActivity(i3,a.toBundle());
    }

在我的片段中 Class 我正在使用这个

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

        getActivity().getWindow().setSharedElementExitTransition(TransitionInflater.from(getActivity()).inflateTransition(R.transition.shared_element_transition));
    }
} 

我也尝试在主要 activity 中使用它,但无法实现共享元素转换,但是当我回到我的 activity 转换时 工作正常 表示其余代码没问题!
如有帮助将不胜感激!

首先您需要在 styles.xml

的 App Theme 中启用 windowContentTrasition
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  <!-- Customize your theme here. -->
  <item name="android:windowContentTransitions">true</item>
  .
  .
</style>

接下来将相同的 transitionName 属性 添加到两个布局中的两个共享元素

android:transitionName="transition_name"

在您的 activity 中创建一个这样的意图

ActivityOptionsCompat options = ActivityOptionsCompat.
    makeSceneTransitionAnimation(this, view, "transition_name");

Intent intent = new Intent(this, MovieInfo.class); 
startActivity(intent, options.toBundle());